java 常用排序算法,简单排序
1.冒泡排序
???? 基本思路是:搜索整个值列,比较相邻元素,如果两者的相对次序不对,则交换它们,其结果是最大值“像水泡一样”移动到值列的最后一个位置上,这也是它在最终完成排序的值列中合适的位置。然后再次搜索值列,将第二大的值移动至倒数第二个位置上,重复该过程,直至将所有元素移动到正确的位置上。
???? 时间复杂度O(n2),最佳情况是已排好序只比较n-1次,不用交换。
??
int[] insertionSort(int[] a) {for (int i = 1; i < a.length; i++) {int temp = a[i];int j = i;while (j > 0 && temp < a[j - 1]) {a[j] = a[j - 1];//all larger elements are moved one pot to the rightj--;}a[j] = temp;}return a;}
????
?? 4 几种排序的比较
??????? 一般不太使用冒泡排序,然而当数据量小时,他会有些应用价值。
??????? 选择排序虽然可以把交换次数降到最低,但比较的次数仍然很大。当数据量很小,并且交换数据相对于比较数据更加耗时,可以使用。
??????? 在大多数情况下,假设数据量较小或基本有序时,插入排序是三种中最好的选择。对于更大数据量的排序来说,快速排序是更好的选择。