1、首先是冒泡排序,算法的思想很简单,假如给我们一个乱序的数组 arr:{1,5,6,2,3,9,4,8,7,10},冒泡排序的思想顾名思义,就是把最大的数或者最小的数往排序的方向冒泡,假如是从小到大排序,所以得做两层嵌套for循环,每次都把最大的数移动到最右边。
代码如下
2、选择排序,选择排序思想也很简单,所谓选择排序,就是每次遍历都选择出最大或者最小的那个数,每次遍历下来都把选择出来的那个数与排序好的数的后一个数作交换,例如给我们一个乱序的数组 arr:{1,5,6,2,3,9,4,8,7,10},需求是对这个数组从小到大排序,同样是做两层嵌套的for循环,每次选择出最小数的坐标,然后让那个最小的数和排序好的数的后一位数作交换,代码和结果如下:
3、插入排序,对于插入排序,它的算法原理也是同它名字一样,首先遍历数组,把遍历到地那个数从数组中拿出来定为flag,此时数组中就空出了一个位置,将flag与其左边排好序的数进行比较,如果比flag大则将其右移,直到找到比flag小的数,则将flag插入到比它小的数右边的位置,如此循环不断地插入,最终使数组有序,代码如下:
4.希尔排序,希尔排序可以说是在插入排序的基础上进行改进的,因为插入排序在数据规模不是很大,并且在数据基本有序的时候其效果最佳,但现实生活中大多数要排序的数据数据量比较大,而且数据基本无序,在这种情况下想用插入排序的那种高性能就变得比较困难了,因此希尔排序随之出现了,希尔排序的大概思想是先把数据在逻辑上分块排序,首先得定义逻辑块的步长,在块内进行插入排序,进而慢慢缩小步长,再排序,就这样,数据就慢慢有序了,从而达到了插入排序的要求,性能也比较可观。下面是本人写的希尔排序的代码: