一、冒泡排序算法
冒泡排序,顾名思义,像冒泡一样进行从小到大的排序,采用的方式为:
两两元素之间进行比较,如图所示:
将下列元素进行冒泡排序
20 | 5 | 60 | 55 | 32 |
首先,让第一个元素与第二个进行比较,如果第一个数大于第二个数,则交换,否则不交换
5 | 20 | 60 | 55 | 32 |
在让此时的第二个元素与第三个元素进行比较,方式与第一次相同,剩下的依次进
最后,第一轮的结果如下
5 | 20 | 55 | 38 | 60 |
然后进行第二轮,第二轮排序依旧从第一个元素开始,方法与上面相同,但是最后的一个元素不参与比较,因为最后一个元素已经是最大值。最后结果为:
5 | 20 | 38 | 55 | 60 |
注:在这里只是举一个例子,在真正的计算中,排序次数可能不止2次,而是数组的长度 - 1 次
其实现代码为:int[] nums = {22,35,4,12,56,62};
//外层循环控制轮数,轮数为numslengtn-1次
for(int i = 0;i<nums.length - 1;i++){
//内层循环控制比较次数,
for(int j = 0;j<nums.length - 1 - i;j++){
if(nums[j] > nums[j+1]){
nums[j] = nums[j] + nums[j+1];
nums[j+1] = nums[j] - nums[j+1];
nums[j] = nums[j] - nums[j+1];
}
}
}
for (int n :nums){
System.out.println(n);
}
二、选择排序算法
从一个数组中,以第一个元素为标准,依次往后作比较,直到找到一个元素比它小,则交换位置,在,让被交换的在依次与剩下的作比较,方法一样,直到找到最小的,放在数组的第一个,此为第一轮,以后每一轮都按照此方法,选择下一个元素作比较,最后的数组为从小到大排列(也可以从大到小排列)
如图:
24 | 4 | 116 | 96 | 52 |
2 | 24 | 116 | 96 | 52 |
三、插入排序算法
类似于选择排序算法,在数组中,选择第二个元素与第一个元素作比较,若大,则不做处理,若小,则将该元素作为临时变量暂时保存,让第一个元素的值覆盖第二个元素,再将临时变量放在第一个位置;在进行第二轮时,选择第三个作为临时变量保存,再与前面的做比较,,若大,则不做处理,若小,则第二个元素覆盖第三个元素,临时变量覆盖第二个元素,然后,在与第一个元素作比较;后面的第三轮,第四轮依次类推;
注:在这三中算法中,最稳定的为冒泡算法,其余两种都不稳定