1.排序

内排序:在排序过程中,所有元素调到内存中进行的排序,称为内排序。
外排序:在数据量大的情况下,只能分块排序,但块与块间不能保证有序。外排序用读/写外存的次数来衡量其效率。
内排序有可以分为以下几类:
  (1)、插入排序:直接插入排序、二分法插入排序、希尔排序。
  (2)、选择排序:简单选择排序、堆排序。
  (3)、交换排序:冒泡排序、快速排序。
  (4)、归并排序
  (5)、基数排序
9种排序之间的关系:
04Java常见问题之排序
04Java常见问题之排序

①直接插入排序:

1、基本思想:从前往后取数,然后从那个数开始从后往前跟每个数作比较
2、实例  
04Java常见问题之排序
3、算法
04Java常见问题之排序

04Java常见问题之排序

②二分法插入排序:

1、基本思想:从前往后取数,然后从那个数开始二分查找中间数与中间数作比较,然后重复二分法查找
2、实例  
04Java常见问题之排序
3、算法
04Java常见问题之排序

04Java常见问题之排序

③希尔排序:

1、基本思想:将数据分成长度除2组,每组之间进行比较,再将长度分为上一组除2组,以此类推
2、实例 
04Java常见问题之排序
 3、算法04Java常见问题之排序

04Java常见问题之排序

④简单选择排序:

1、基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。
2、实例  
04Java常见问题之排序
3、算法
04Java常见问题之排序
04Java常见问题之排序

⑤堆排序:

1、基本思想:初始时把要排序的数的序列看作是一棵顺序存储的二叉树,调整它们的存储序,使之成为一个 堆,这时堆的根节点的数最大。然后将根节点与堆的最后一个节点交换。然后对前面(n-1)个数重新调整使之成为堆。依此类推,直到只有两个节点的堆,并对 它们作交换,最后得到有n个节点的有序序列。
2、实例  
04Java常见问题之排序
3、算法
04Java常见问题之排序
04Java常见问题之排序

⑥冒泡排序:

1、基本思想:比较相邻的元素。如果第一个比第二个大,就交换他们两个
2、实例 
04Java常见问题之排序
3、算法
04Java常见问题之排序
04Java常见问题之排序

⑦快速排序:

1、基本思想:选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟扫描,将待排序列分成两部分,然后左边都是小于基准数的数,右边都是大于基准数的数,接下来就是将这个数组,按照基准数分为左右两个数组,分别再重复之前的方法来排序
2、实例 
04Java常见问题之排序
3、算法
04Java常见问题之排序
04Java常见问题之排序

⑧归并排序:

1、基本思想:先两个数比较排序,再四个数比较排序,再八个数比较排序,以此类推
2、实例 
04Java常见问题之排序
3、算法
04Java常见问题之排序
04Java常见问题之排序

⑨基数排序:

1、基本思想:比较个位并排序,比较十位并排序,比较百位并排序,以此类推
2、实例 
04Java常见问题之排序
3、算法
04Java常见问题之排序
04Java常见问题之排序

相关文章: