ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

<排序算法> 冒泡排序BubbleSort

2019-07-20 19:02:52  阅读:182  来源: 互联网

标签:arr int 反序 冒泡排序 BubbleSort flag 循环 数组


(一)BubbleSort冒泡排序
1.核心思想:
根据要求,对数组进行相邻的两两元素之间的比较,如果反序就进行交换,直到数组没有反序的相邻的元素为止。
2.冒泡排序的优化:
①内层循环的条件不需要再写成j<length数组长度,因为随着比较符合条件的最大值或者最小值已经被交换到了数组的尾巴,所以内层循环的执行次数应该是越来越少的,写成j<length-1-i就可以。(length需要-1是为了避免出现越界比较的情况,再-i是因为后面已经有i个有序的元素了,所以不需要进行比较了)
②针对数组原本就全部有序:
可以在进入循环之前定义一个bool类型的flag变量并且初始化为true,进入第一层循环将这个flag置为false,如果在进入第二层循环之后,进行了交换就将这个变量置为true,出了第二层循环对这个flag变量进行判断,如果变量的值为false,那么就说明遍历了一遍数组之后相邻的两个元素都没有反序的,直接退出循环;
如果数组部分有序:
其实就可以把flag声明为一个int类型的值,每次进行交换的时候把flag赋值为j+1即最大交换位置,执行完第二层循环之后改变i的值为length-flag-1,这样又减少了循环和交换的次数。
3.代码实现:排序完成从小到大

 1 #include<iostream>
 2 using namespace std;
 3 
 4 void BubbleSort(int arr[],int len)
 5 {
 6     if(arr == NULL || len <= 0)    return ;
 7     int i,j;
 8     for(i=0;i<len;i++)
 9     {
10         for(j=0;j<len-i-1;j++)
11         {
12             if(arr[j] > arr[j+1])
13             {
14                 int t = arr[j];
15                 arr[j] = arr[j+1];
16                 arr[j+1] = t;
17             }
18         }
19     }
20 
21     return ;
22 }
23 
24 void PrintArr(int arr[],int len)
25 {
26     for(int i=0;i<len;i++)
27         cout << arr[i] << " ";
28     cout << endl;
29 
30     return ;
31 }
32 
33 int main()
34 {
35     //int arr[10] = {9,8,7,6,5,4,3,2,1,0};
36     int arr[10] = {4,8,6,3,7,2,9,5,0,1};
37     BubbleSort(arr,sizeof(arr)/sizeof(arr[0]));
38     PrintArr(arr,sizeof(arr)/sizeof(arr[0]));
39 
40     system("pause");
41     return 0;
42 }

 

标签:arr,int,反序,冒泡排序,BubbleSort,flag,循环,数组
来源: https://www.cnblogs.com/Aaaaaalei0612/p/11218766.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有