C语言版本:
#include<stdio.h>
void insertSort(int a[],int n)
{
for(int i=0;i<n;i++)
{
int temp=a[i];
int j=0;
for(j=i;j>0&&a[j-1]>temp;j--)
{
a[j]=a[j-1];
}
a[j]=temp;
}
}
int main(int argc, char *argv[])
{
int n;
while(scanf("%d",&n)!=EOF)
{
int i;
int a[n];
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
insertSort(a,n);
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
return 0;
}
Java版本:
package algorithm.sort;
import java.util.ArrayList;
public class InsertSort {
public <T extends Comparable<? super T>> void insertSort(ArrayList<T> array){
for (int i = 1; i < array.size(); i++) {
T temp=array.get(i);
int j=0;
for (j = i; j>0 && array.get(j-1).compareTo(temp)>0; j--) {
array.set(j, array.get(j-1));
}
array.set(j, temp);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<Integer> arr=new ArrayList<Integer>();
for (int i = 0; i < 10000; ++i) {
arr.add( (int) (Math.random() * 10000));
}
InsertSort is=new InsertSort();
is.insertSort(arr);
for (int i = 0; i < arr.size(); i++) {
System.out.println(arr.get(i));
}
}
}