校招算法之冒泡排序的优化
2016-08-13 17:45
281 查看
冒泡排序算法的基础见:冒泡排序。但是冒泡排序的复杂度最好的情况是O(n),这种情况是怎么出现的呢?
这就是冒泡排序的优化。原理:设定一个标志值(flag),判断此时排序是否已经完成不需要再次排序。
C++版代码:#include<iostream>
using namespace std;
void bubbleSort(int* bubble,int num);
int main()
{
int num;//输入排序数组大小
cout << "please inputh the num:" ;
cin >> num;
cout << endl;
int * bubble = new int[num];
cout << "please input the integers:" << endl;
for (int i = 0; i < num; i++)
cin >> bubble[i];
bubbleSort(*&bubble,num);
for (int i = 0; i < num; i++)
{
cout << bubble[i] << endl;
}
system("pause");
delete[]bubble;
return 0;
}
void bubbleSort(int* bubble,int num)
{
int swap_value = 0;
int temp = 0;
int flag = 1;//标志
for (int i = 0; i < num&&flag; i++)//判断需要仍要遍历吗
{
flag = 0;
for (int j = 0; j < num - i - 1; j++)
{
if (bubble[j]>bubble[j + 1])
{
temp = bubble[j];
bubble[j] = bubble[j + 1];
bubble[j + 1] = temp;
flag = 1;
}
}
}
}
注意bubbleSort是稳定的呢,相同的元素是不会交换相对位置。同时java版的可以自己实现。
这就是冒泡排序的优化。原理:设定一个标志值(flag),判断此时排序是否已经完成不需要再次排序。
C++版代码:#include<iostream>
using namespace std;
void bubbleSort(int* bubble,int num);
int main()
{
int num;//输入排序数组大小
cout << "please inputh the num:" ;
cin >> num;
cout << endl;
int * bubble = new int[num];
cout << "please input the integers:" << endl;
for (int i = 0; i < num; i++)
cin >> bubble[i];
bubbleSort(*&bubble,num);
for (int i = 0; i < num; i++)
{
cout << bubble[i] << endl;
}
system("pause");
delete[]bubble;
return 0;
}
void bubbleSort(int* bubble,int num)
{
int swap_value = 0;
int temp = 0;
int flag = 1;//标志
for (int i = 0; i < num&&flag; i++)//判断需要仍要遍历吗
{
flag = 0;
for (int j = 0; j < num - i - 1; j++)
{
if (bubble[j]>bubble[j + 1])
{
temp = bubble[j];
bubble[j] = bubble[j + 1];
bubble[j + 1] = temp;
flag = 1;
}
}
}
}
注意bubbleSort是稳定的呢,相同的元素是不会交换相对位置。同时java版的可以自己实现。
相关文章推荐
- 【算法1】之冒泡排序极其优化
- 【数据结构与算法】内部排序之二:冒泡排序和选择排序(改进优化,附完整源码)
- 排序算法-对冒泡排序的优化改进算法
- 算法——排序之冒泡排序优化
- *冒泡排序及其算法优化分析
- 看数据结构写代码(2) 选择排序 和 冒泡排序 算法优化
- 冒泡排序实现及算法优化(java)
- 【数据结构与算法】内部排序之二:冒泡排序和选择排序(改进优化,附完整源码)
- 【算法导论-006】冒泡排序及其优化(BubbleSort)
- ios之经典算法冒泡排序以及优化
- 《大话数据结构》读书笔记之冒泡排序和源码及优化算法源码
- 经典算法之二:冒泡排序及优化
- 冒泡排序的优化算法
- 校招算法复习之冒泡排序
- 冒泡排序及算法优化
- 海量数据库的查询优化及分页算法方案 :转
- 海量数据库的查询优化及分页算法方案
- 海量数据库的查询优化及分页算法方案 (zz)
- 海量数据库的查询优化及分页算法方案
- SQLSERVER海量数据库的查询优化及分页算法