七种排序算法Java版,最常用的7种
}
}
/**
* 插入排序
,适用于少量数据的排序,时间复杂度O(n2),是稳定的排序算法,原地排序
*
* @param a
*/ public static void insertSort(int[] a) {
int length = a.length;
for (int i = 1; i < length; i++) {
int temp = a[i];
int j = i;
for (; j > 0 && a[j - 1] > temp; j--) {
a[j] = a[j - 1];
}
a[j] = temp;
}
}
/**
* 归并排序算法
,稳定排序,非原地排序,空间复杂度O(n),时间复杂度O(nlogn)
* * @param a
* @param low
* @param high
*/
public static void mergeSort(int a[], int low, int high) { if (low < high) {
mergeSort(a, low, (low + high) / 2);
mergeSort(a, (low + high) / 2 + 1, high);
merge(a, low, (high + low) / 2, high);
}
}
/**
* 归并排序辅助方法,合并
* * @param a
* @param low
* @param mid
* @param high