冒泡排序(初级版)之C++实现
一、源代码:BubbleSortLow.cpp
1 /*冒泡排序思想: 2 从第一个元素开始,对数组中两两相邻的元素比较,将值较小的元素放在前面,值较大的元素放在后面; 3 一轮比较完毕,一个最大的数沉底成为数组中的最后一个元素,一些较小的数如同气泡一样上浮一个位置。 4 n个数,经过n-1轮比较后完成排序。 5 */ 6 #include<iostream> 7 using namespace std; 8 9 /*定义输出一维数组的函数*/ 10 void print(int array[], int n) 11 { 12 for (int i = 0; i < n; i++) 13 { 14 cout << array[i] << " "; 15 } 16 cout << endl; 17 } 18 19 /*定义冒泡排序的函数,升序排序,返回交换次数*/ 20 int bubbleSort(int array[],int n) 21 { 22 //定义变量,记录交换次数 23 int count = 0; 24 //定义中间变量temp 25 int temp; 26 //遍历数组(进行排序) 27 cout << "开始对数组进行排序了..." << endl; 28 for (int i = 0; i < n; i++) 29 { 30 for (int j = 0; j < n - 1 - i; j++) 31 { 32 cout << "第" << (i + 1) << "趟第" << (j + 1) << "次排序" << endl; 33 //如果左边的数大于右边的数就进行交换顺序 34 if (array[j] > array[j + 1]) 35 { 36 temp = array[j]; 37 array[j] = array[j + 1]; 38 array[j + 1] = temp; 39 cout << array[j] << "和" << array[j + 1] << "互换了" << endl; 40 //输出此时数组的顺序 41 cout << "数组此时的顺序是:"; 42 print(array, 10); 43 //每交换一次,记录数加1 44 count++; 45 } 46 } 47 } 48 cout << "数组排序结束了..." << endl; 49 return count; 50 } 51 52 int main() 53 { 54 //定义待排序的一维数组 55 int array[] = { 1, 3, 4, 5, 2, 6, 10, 9, 8, 7 }; 56 //输出原始数组 57 cout << "原始数组是:" << endl; 58 print(array, 10); 59 //对数组进行排序 60 int count = bubbleSort(array, 10); 61 //输出排序后的数组 62 cout << "排序后的数组是:" << endl; 63 print(array, 10); 64 cout << "共交换" << count << "次" << endl; 65 }
二、运行结果