常用排序算法

1.选择排序

通常使用两层 for 循环来实现:第一层 for 循环依次选定数组从 0 到 N 的每一个索引位置的值,第二层 for 循环将该索引后的每个值依次与该索引的值进行比较,将较小值交换到第一层循环索引所在的位置。这就使得第一层 for 每一次循环都是在将剩余数组的最小值排列在剩余数组的最前列,最终实现升序排列。

代码实现

 

 

2.冒泡排序

使用双层 for 循环,第二层循环从 0 到 N 将相邻索引位置的值两两对比,将较大值交换到后一位,第二层循环遍历完成,就将无序区的最大值推到了数组最后。第一层循环重复冒泡过程,将无序区的最大值依次交换到数组右边的有序区,最终实现升序排列。

代码实现

 

 

3.插入排序

插入排序的原理是将数组中索引 0 既定为有序区,然后把索引 1 的值取出设定为插入值,将插入值和索引 0 的值对比,如果索引 0 的值较大,则把索引 0 的值往后移动一位,插入值到空出的位置,则索引 0 和索引 1 就是有序的。接着把索引 2 的值作为插入值依次往前对比,如果前面的值较大,则该值往后移动一位,直到找到一个更小值,将插入值放置到更小值之后,又形成了一个有序区。以此类推,最终整个数组都变成有序。
代码实现

 

 

4.快速排序

原理是在数组中随机取一个基准数,一个最左索引 i 和一个最右索引 j 。从索引 j 开始往左找到第一个小于基准值的值,将其赋值给 arr[i] ,然后将 i 往右移动一格;接着从索引 i 开始往右找到第一个大于基准值的值,将其赋值给 arr[j] ,并把 j 往左移动一格。依此类推,当 i 和 j 索引重合时停止,最后将基准值赋值给 arr[i] ,至此 i 左边的值都比 i 小,i 右边的值都比 i 大 ,接着使用递归将左右两边的子数组分别进行快速排序,最终得到一个有序数组。
代码实现

 

posted @ 2021-03-28 19:06  201810420204  阅读(32)  评论(0)    收藏  举报