七大排序之冒泡排序
标签:using const ios gets 冒泡排序 aos -- cout swa
经典冒泡排序:
思想:俩俩比较,如果是实现升序排序,则俩俩排序的目的就是将其中大的数依次往后挪,或者是将较小的数往前挪;
每一趟外循环的目的就是将这一趟中最大的数放在数组的最后面,或者是将最小的数放在最前面。
例如:3 4 2 5 0 1 六个数,我们采用大数沉底的方法。
【1】先说外循环:即趟数
第一趟循环将5放到数组的最后一位,第二趟将4放在5的前面,依次这样,最后第五趟1放在第二位置,此时0就已经排在最前面了,所以外循环总共要循环(n-1)次;n为数的个数。所以外循环变量i为:for(i=0;i
【2】再说内循环:即具体实现将大树依次放到数组的最后
数组的第1位下标为0,所以初始化内循环变量j=0,在第一轮外循环中,需要将5放在最后,从下标为0开始,即第一位开始和第二位进行比较,32交换位置得到(324501);再次j++,比较第三位和第四位40交换得到(324051)j++比较第五位和第六位
5>0,交换的到(324015)所以在第一趟中将最大数字5沉底。总共j++执行了5次(n-i-1)次(注意j是从0开始的)。
所以内循环变量为:for(int j=0;j整体代码如下:
1 #include 2 #include 3 #include 4 #include 5 using namespace std;
6
7 const int Max = 10;
8
9 void swap(int& a, int& b) {
10 int temp = a;
11 a = b;
12 b = temp;
13 }
14 //小数冒泡
15 //void Maopaosort(int* arr,int length) {
16 // for (int i = 0; i 17 // for (int j = length-1; j>i; j--) {
18 // if (arr[j-1] > arr[j])
19 // swap(arr[j], arr[j - 1]);
20 // }
21 // }
22 //}
23 //大数沉底
24
25 void Maopaosort(int* arr, int length) {
26 for (int i = 0; i 1; i++) {
27 for (int j = 0; j1; j++) {
28 if (arr[j] > arr[j+1])
29 swap(arr[j], arr[j +1]);
30 }
31 }
32 }
33
34
35 long getSystemTime() {
36 struct timeb tb;
37 ftime(&tb);
38 return tb.time * 1000 + tb.millitm;
39 }
40 void Print(const int* arr,int length){
41 for (int i = 0; i ) {
42 cout " ";
43 }
44
45 }
46 int main() {
47 int arr[Max];
48 srand((unsigned)time(NULL));
49 for (int i = 0; i ) {
50 arr[i] = rand() % Max;
51 }
52 cout "排序前:\n";
53 Print(arr,Max);
54 long pt = getSystemTime();
55 Maopaosort(arr, Max);
56 long at = getSystemTime();
57 cout "\n排序后:\n";
58 Print(arr,Max);
59
60 cout "\ntime of sort:" "ms\n";
61
62
63 return 0;
64 }
七大排序之冒泡排序
标签:using const ios gets 冒泡排序 aos -- cout swa
原文地址:https://www.cnblogs.com/jibisheng/p/12968163.html
评论