排序
总表 排序算法 平均复杂度 最优复杂度 最差情况的复杂度 稳定性 空间复杂 起泡排序 n2 n n2 稳定 1 插入排序 n2 n n2 稳定 插入排序 选择排序 n2 n2 n2 不稳定 1 希尔排序 n2 不稳定 1 快速排序 nlogn nlogn n2 不稳定 logn 堆排序 nlogn nlogn nlogn 不稳定 1 归并排序 nlogn nlogn nlogn 稳定 n 插入排序: 把整个序列分为有序的前半部分和无序的后半部分,每次从无序的后半部分取出第一个插入到有序部分中间 起泡排序: 每次比较相邻的两个元素,若前者较大则交换两个元素的顺序,每轮会把一个最大元素交换到最后的位置; 选择排序: 把整个序列分为有序的前半部分和无序的后半部分,每次从无序的后半部分选取最小元素插入到有序部分的末尾 快速排序: 每次以某个元素为界(一般是第一个元素)将整个序列按大小划分为两部分,然后递归地对左右两组元素做同样的事情 void quickSort ( int [ ] array , int start , int end ) { if ( start >= end ) { return ; } boolean order = true ; int i = start ; int j = end ; while ( i != j ) { if ( array [ i ] >