接下来我将以数组为例大致介绍这三种排序方法:
创建一个长度为10的数组。可以使用for循环遍历和(int)Math.random()*100生成一个100以内的随机整数数组。
这里为了演示方便,直接创建int[] numArray={13, 8, 34, 27, 18, 40, 67, 87, 36, 10};
注意:外层循环控制循环轮数,内层循环控制每轮循环次数(降序排列)
冒泡排序法:就是将上述数列中的数进行两两比较(10个数最多只需要9轮循环),如果第1个数小于第2个数,那么这两个数交换位置,然后再将第2个数与第3个数进行相同比较,直到比较到最后一个数,第一轮循环结束,最小值位于数列末尾;第二轮循环比较数时,就不需要在比较第一轮产生的最小值了(比较次数比上一轮少一次),重复第一轮的比较。每轮循环结束都会将剩余数字的最小值置于剩余数的末尾。
代码及结果如下:
选择排序法: 就是每一轮循环开始,假设第一个数是最大值,并用变量储存这个值和下标,然后将后面的数一次与这个值比较,如果比这个最大值大,那么将这个数的值和下标赋给最大值,然后再往后进行比较。每一轮循环结束产生一个最大值,然后将这个值得下标给第一个数进行互换。第二轮循环时,需要从第二个数开始。需要注意与冒泡排序法的区别。
代码及结果如下:
插入排序法: 从第二个数开始,每个数都与前面的数进行比较,如果小于前面的数,那么位子不变如果大于前面的数,那么后面的数就与前面的数互换位置,互换后的数在和前面的数进行比较,直到位置不变位置。