对链表结构存储数据的插入排序代码如下所示:
class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
next = null;
}
}
public ListNode insertSort(ListNode head){
if(head==null||head.next==null)
return head;
ListNode result, temp , pre ,p;
result = head;
head = head.next;
result.next = null;
while(head!=null){
temp = head;
head = head.next;
temp.next = null;
if(result.val<temp.val){
temp.next = result;
result = temp;
continue;
}
pre = result;
p = pre.next;
while(p!=null&&pre.val<temp.val){
pre = p;
p = p.next;
}
temp.next = p;
pre.next = temp;
}
return result;
}
若采用数组存储数据,排序算法实现如下:
public static int[] insertSort(int data[]) {
if (data.length < 2)
return data;
for (int i = 1; i < data.length; i++) {
int index = 0, temp = data[i];
for (int j = 0; j < i; j++) {
if (data[j] > temp) {
break;
}
index++;
}
for (int k = i -1; k >= index; k--) {
data[k + 1] = data[k];
}
data[index] = temp;
}
return data;
}