对于少量元素的排序,插入排序是一个有效的算法,插入排序的工作方式就像许多人排序一手扑克牌,开始时,我们的左手为空并且桌子上的牌面向下。然后,我们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右将它与已在手中的每张牌进行比较。
最终,拿在左手上的牌都是排序好的,原来这些牌是桌子上牌堆中顶部的牌。
对于插入排序,我们将其伪代码过程命名为 INSERTION-SORT,其中的参数是一个数组A[1…n],包含长度为n的要排序的一个序列。该算法原址排序输入的数:算法在数组A中重排这些数,在任何时候,最多只有其中的常数个数字存储在数组外面,在过程 INSERTION_SORT结束时,输入数组A包含排序好的输出序列。
伪代码:
INSERTION_SORT(A)
1. for j=2 to A.length
2. key=A[j]
3. //insert A[j] into the sorted sequence A[1..j-1]
4. i=j-1
5. while(i>0 and A[j]>key)
6. A[i+1]=A[j]
7. i=i-1
8. A[i+1]=key
java代码
import java.util.Scanner;
class InsertSort {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.print("待排序的数字数组:");
int a = scanner.nextInt();
int[] letters = new int[a];
for(int i=0;i<letters.length;i++){
letters[i]=scanner.nextInt();
}
for(int i=1;i<letters.length;i++){
int letter = letters[i];
int j=i;
while(j>0&&letters[j-1]>letter){
letters[j]=letters[j-1];
j--;
}
letters[j]=letter;
}
for(int i=0;i<letters.length;i++){
System.out.print(letters[i]);
}
}
}