一、优化的冒泡排序
1、思路: 如果说在某次比较过程中,没有发现交换的过程,说明当前的序例已经是排好序的。
flag == 1 表示有交换过程
flag == 0 表示已排序完成
2、代码实现:
void bubble_sort1(int *array, int length)
{
int j = 0;
int temp = 0;
bool flag = 1;
while(flag){ //上一轮是否出现交换过程
flag = 0; //每一轮的初始状态默认没有交换
for(j = 1; j < length; ++j){
if(array[j - 1] > array[j]){
temp = array[j - 1];
array[j - 1] = array[j];
array[j] = temp;
flag = 1;
}
}
length--;
}
}
二、冒泡排序(传统版)
1、 思路: 每次将前一个数与后一个数比较,大的后移,每遍历一次可以找出剩下数中的最大数,遍历N-1次即可
2、代码实现:
void bubble_sort(int *array, int length)
{
int i = 0;
int j = 0;
int temp = 0;
for(i = 0; i < length - 1; ++i){
for(j = 1; j < length - i; ++j){
if(array[j - 1] > array[j]){
temp = array[j - 1];
array[j - 1] = array[j];
array[j] = temp;
}
}
}
}