冒泡排序
一、问题描述
对N个整数(数据由键盘输入)进行升序排序。
二、解题思路
由键盘输入的n个数可以储存到长度为n的数组里,然后对其进行操作。
冒泡排序的思路:冒泡排序的思想:首先,从表头开始往后扫描数组,在扫描过程中逐对比较相邻两个元素的大小。若相邻两个元素中,前面的元素大于后面的元素,则将它们互换,称之为消去了一个逆序。在扫描过程中,不断地将两相邻元素中的大者往后移动,最后就将数组中的最大者换到了表的最后,这正是数组中最大元素应有的位置。然后,在剩下的数组元素中(n-1个元素)重复上面的过程,将次小元素放到倒数第2个位置。不断重复上述过程,直到剩下的数组元素为0为止,此时的数组就变为了有序。假设数组元素的个数为n,在最坏情况下需要的比较总次数为: ((n-1)+(n- -2)+...+2+1)= n(n- 1)/2。
三、代码实现
#include<iostream> #include<cmath> using namespace std; const int N = 1000010; int a[N]; int main() { int n = 10; for (int i = 0; i < n; i++) { cin >> a[i]; } for (int i = 0; i < n; i++) { for (int j = i; j < n; j++) { if (a[j] < a[i]) { int t = a[j]; a[j] = a[i]; a[i] = t; } } } for (int i = 0; i < n; i++) { cout << a[i] << " "; } cout << endl; return 0; }
运行结果


浙公网安备 33010602011771号