本文共 804 字,大约阅读时间需要 2 分钟。
按照约定的排序顺序,两两比较相邻的数据,如果反序则交换,直到没有反序记录为止
比较次数:比较(n-1)* n / 2 次 交换次数:最坏时交换,没比较完一次就要交换一次,交换(n-1) * n / 2 次C语言实现
void bubblesort(int arr[], int n){ int i, j, temp = 0; for(i = 0; i < n; i++) { for(j = 0; j < n - i -1; j++) { if(arr[j] > arr[j + 1]) //两两比较相邻数据,反序则交换 { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } return;}
冒泡排序改进版:设置一个标签flag,进行一轮比较前,先默认数据是有序的,如果中间有数据交换,则将flag设置成无序,进行下一轮比较,如果一轮比较完,flag仍是有序,则退出排序
void bubblesort(int arr[], int n){ int i, j, temp = 0; int flag; for(i = 0; i < n; i++) { flag = 1; //假设数据是有序的 for(j = 0; j < n - i -1; j++) { if(arr[j] > arr[j + 1])//两两比较相邻数据,反序则交换 { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; flag = 0;//一旦有数据交换,就设置flag } } if(flag == 1)//如果一轮比较下来没有发生数据交换,则数据是有序的,不需要再排序了 break; } return;}
转载地址:http://fboii.baihongyu.com/