Java 常用排序算法总结
排序的介绍:排序是将一组数据,依指定的顺序进行排列的过程。
排序的分类
1、内部排序法:指将需要处理的所有数据都加载到内部存储器中进行排序。包括(交换
式排序法、选择式排序法和插入式排序法);
2、外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。
包括(归并排序法和直接合并排序法)。
交换式排序法可分为两种:1、冒泡排序法(Bubble Sorting);2、快速排序法(Quick
Sorting)。
选择式排序法可分为两种:1、选择排序法(Selection Sorting);2、堆排序法(Heap
Sorting)。
插入式排序法可分为三种:1、插入排序法(Insertion Sorting);2、希尔排序法(Shell
Sorting);3、二叉树排序法(Binary-tree Sorting)。
其他排序方法:1、桶排序/基数排序(Radix Sort);2、归并排序(Merge Sort),当数
据规模变得很大时,归并排序可用来做外部排序算法,合并两个已经排序好的文件。
内部排序法
交换式排序法
交换式排序属于内部排序法,是运用数据值比较后,依判断规则对数据位置进行交换,
以达到排序的目的。
冒泡排序法:冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从后向前(从
下标较大的元素开始),依次比较相邻元素的排序码,若发现逆序则交换,使排序码较小的
元素逐渐从后部移向前部(从下标较大的单元移向下标较小的单元),就象水底下的气泡一样
逐渐向上冒。(其实也可以从前往后,较大的元素一直下沉)
因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,
就说明序列有序,因此要在排序过程中设置一个标志 flag 判断元素是否进行过交换。从而
减少不必要的比较。