题目 用插入排序对链表排序 样例 Given 1->3->2->0->null, return 0->1->2->3->null 解题 public class Solution { /** * @param head: The first node of linked list. * @return: The head of linked list. */ public ListNode insertionSortList(L
插入排序算法通过比较和插入来实现排序,其排序流程如下:
1.首先对数组的前两个数据进行从小到大排序;
2.接着将第三个数据与排好序的前两个数据进行比较,将第三个数据插入到合适的位置。
3.然后将第四个数据插入到已经排好序的前三个数据当中去。希尔排序(Shell’s Sort) 希尔排序又称“缩小增量排序”(Diminishing Incerment Sort),是插入排序的一种,因D.L.Shell于1959年提出而得名。直接插入排序当待排序的记录个数较少且待排序序列的关键字基本有序时,效率较高。希尔排序基于以上两点,从“减少
4.不断重复上述过程,知道把最后一个数据插入到合适的位置。
package suanfa;
public class InsertQort {
public static void main(String[] args) {
int LEN =30;
int[] arr = new int[LEN];
for (int i = 0; i < LEN; i++) {
arr[i] = (int) ((Math.random()) * 11);
}
insertsort(arr);
for (int i = 0; i < LEN; i++) {
System.out.print(arr[i] + "-");
}
}
static void insertsort(int arr[]) {
for (int i = 0; i < arr.length; i++) {
int j = i;
int t = arr[i];
while (j > 0 && t < arr[j - 1]) {
arr[j] = arr[j - 1];
j--;
}
arr[j] = t;
}
}
}程序中的算法也可以这样描述
1.数组中的第一个数据位置不变;
2.从数组的第二个数据开始,依次插入到拍好的数据中去,规则就是从队尾依次向前比较直到碰见小于自己的数据。同时自己每向前移一位,后面的数据就往后移一位;
3.重复以上