2.排序--插入排序和希尔排序
2012-09-14 13:14 jiutianhe 阅读(128) 评论(0) 编辑 收藏 举报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)); } } }