/* * 冒泡排序(从小到大) * 基本思想 * 1)总共冒泡n-1次,每次进行相邻的两两相互比较,较大的交换到后面 * 2)一次冒泡总能将最大的一个数冒到最后,这样的过程类似于水中的气泡 * 上冒,故称冒泡排序 * 3)如果存在一次冒泡过程,没有任何数据进行交换,则说明已经有序,停止排序 这样可以提高性能 * 稳定性:稳定 * 时间复杂度:最好O(n) 最差O(n2) 平均O(n2) * 适用情况:n小时较好 */ void BubbleSort(int a[], int n) { int flag, temp; //总共需要冒泡n-1次 for(int i=0; i<n-1; i++) { flag = 0; for(int j=0; j<n-1-i; j++) { if(a[j+1] < a[j])//交换 { temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; flag = 1; } } if(0 == flag) { break; } } } int main() { int a[] = {3, 8, 15, 7, 21, 6}; BubbleSort(a, 6); for(int i=0; i<6; i++) { cout << a[i] << " "; } cout << endl; system("pause"); return 0; }