冒泡排序的介绍以及讲解。
这里介绍的是升序排序的原理,如果你已经对冒泡排序的原理完全掌握了,那么不管是升序还是降序,是先排小的还是先排大的都难不倒你。
一、为什么叫冒泡
这个问题跟这种排序的原理有关,它的原理就像烧水一样,水里的气泡会随着气泡的高度的变高而变大(这是因为越高水压越小,水给气体的压力变小了,气泡就会变大)。这里讲完不理解没事,看完原理就理解了。
二、冒泡排序的原理
升序排序,所以我们从最大的排到最小的。
需要获得两个条件:1、那个的元素应该放的位置。2、那个元素。
1、那个元素该放的位置
升序排序,所以只要我们写一个遍历,从大到小的遍历,这样就能得到我们放元素的位置了。
2、那个元素
升序排序,而且我们从最大的排到最小的,先排最大的,所以我们要对数组进行遍历来找到那个最大的元素,然后再把那个元素放到它应该在的位置。这个过程也就是找元素。
找元素的过程中,如果前者比后者小,那我们就交换两个元素,而不是直接覆盖,覆盖会造成元素的遗失。
3、冒泡需要的参数
理解完前两个原理之后,对于排序前的数组,我们需要用到原数组的元素的个数(用来遍历),还有具体元素的大小,所以需要传入数组的首地址跟元素的个数。
三、冒牌排序的实现
void Bubblesort(int *nums,int numssize){
for(int i = numssize-1;i>=0;i--){ //那个元素该放的位置
for(int j = 1;j<=i;j++){ //找到那个元素
if(nums[j-1]>nums[j]){
int temp = nums[j-1];
nums[j-1] = nums[j];
nums[j] = temp;
}
}
}
}