经过第⼆次冒泡,最终到了除 97 之外的⼜⼀个最⼤值 76,⽐较过程完全⼀样,这⾥不再描述。
通过⼀趟趟的⽐较,⼀个个的“最⼤值”被到并移动到相应位置,直到检测到表中数据已经有序,或者⽐较次数等同于表中含有记录的个数,排序结束,这就是起泡排序。
起泡排序的具体实现代码为:
#include
//交换 a 和 b 的位置的函数
void swap(int *a, int *b);
int main()
{
int array[8] = {49,38,65,97,76,13,27,49};
int i, j;
int key;
//有多少记录,就需要多少次冒泡,当⽐较过程,所有记录都按照升序排列时,排序结束
for (i = 0; i < 8; i++){
key=0;//每次开始冒泡前,初始化 key 值为 0
c语言的冒泡排序算法
//每次起泡从下标为 0 开始,到 8-i 结束
for (j = 0; j+1<8-i; j++){
if (array[j] > array[j+1]){
key=1;
swap(&array[j], &array[j+1]);
}
}
//如果 key 值为 0,表明表中记录排序完成
if (key==0) {
break;
}
}
for (i = 0; i < 8; i++){
printf("%d ", array[i]);
}
return 0;
}
void swap(int *a, int *b){
int temp;