冒泡排序法
创始人
2024-02-10 22:13:30
0

目录

一、问题

二、冒泡排序的思想

三、举例

四、算法分析

五、代码实现


一、问题

现有一个整型数组(乱序),并且写一个函数(Sort)对数组进行排序,顺序要求升序。

二、冒泡排序的思想

两两相邻的元素进行比较,有可能需要交换(下面有图文说明能帮助大家理解)

        对于升序,比较相邻的元素。如果第一个比第二个大,就交换。对每一对相邻元素作同样的工作,从开始第一对到结尾到最后一对。这一趟做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

三、举例

要求:升序

1)第一趟排序:

第一次排序:5和9比较,位置不变 5,9,3,6

第二次排序:9和3比较,位置交换,5,3,9,6

第三次排序:9和6比较,位置交换,5,3,6,9

总结:第一趟总共进行3次排序。

 2)第二趟排序:

第一次排序:5和3比较,位置交换, 3,5,6,9

第二次排序:5和6比较,位置不变, 3,5,6,7

总结:第二趟总共进行2次排序。

3)第三趟排序 :

第一次排序:3和5比较,位置不变  3,5,6,7

到目前位置已经为有序的情形了。

总结:第二趟总共进行1排序。

到目前位置已经为有序的情形了。

四、算法分析

N个数字要排序,总共进行N-1趟排序,每x趟的排序次数为(N-x)次,所以可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数。

五、代码实现

#include 
void Sort(int arr[],int sz)
{//趟数int i = 0;for (i = 0; i < sz-1; i++){//一趟冒泡排序int j = 0;for (j = 0; j < sz - 1 - i; j++){//相邻数字比较if (arr[j] > arr[j + 1]){//前大于后则交换int tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;}}}
}
int main()
{int i = 0; //不同函数内部可以取相同变量名int arr[] = { 2,6,8,7,6,0,1,5,9,3 };int sz = sizeof(arr) / sizeof(arr[0]);//计算数组元素个数Sort(arr,sz);for (i = 0; i < sz; i++){printf("%d ", arr[i]);}}

程序结果:

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...