冒泡排序
基本操作: 重复走访要进行排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。直到走访数列的工作中不再 出现交换,也就说明该数列已经排序完成。
排序思路:
原始数据 5 4 1 2 3
第一次排序开始 4 5 1 2 3
4 1 5 2 3
4 1 2 5 3
第一次排序完成 4 1 2 3 5
第二次排序开始 1 4 2 3 5
1 2 4 3 5
第二次排序完成 1 2 3 4 5
第三次排序完成 1 2 3 4 5
第四次排序完成 1 2 3 4 5
该数列排序完成
# include <stdio.h> //此次排序为升序 void BubSort(int a[], int n){ int i, j, temp; for(i = 0; i < n-1; i++){//仅需要排序n-1次即可 for(j = 0; j< n-i-1; j++){//走访数列 走访的范围是下标0-下标n-i-2 if(a[j]>a[j+1]){//排列顺序出错 进行数据交换 temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } //排序结果输出 printf("第%d次排序:", i+1); for(j = 0; j < n; j++){ printf("%d ", a[j]); } printf("\n"); } return ; } int main(void){ int a[] = {5, 4, 1, 2, 3}; BubSort(a, 5); return 1; }