排序

冒泡排序

public  static  void bubbleSort(int a[]){
        int temp;
        for (int i = 0; i <=a.length ; i++) {
            for (int j = i+1; j < a.length; j++) {
                if (a[i]>a[j]){
                    temp=a[i];
                    a[i]=a[j];
                    a[j]=temp;
                }
            }
        }
    }

插入排序

 public static void insertSort(int a[]){
        for (int i=1;i<a.length;i++){
            if (a[i]<a[i-1]){//若第i个元素大于i-1元素,直接插入。小于的话,移动有序表后插入
                int j=i-1;
                int x=a[i];//复制为哨兵,即存储待排序元素
                a[i]=a[i-1];//后移一个元素
                while (j>=0&&x<a[j]){//查找在有序表的插入位置
                    a[j+1]=a[j];
                    j--;//元素后移
                }
                a[j+1] = x;//插入到正确位置
            }
        }
    }

选择排序

public  static  void selectSort(int a[]){
        int key,temp;
        for (int i = 0; i <a.length ; i++) {
            key=selectMinKey(a,i);
            if (key!=i){
                temp=a[i];
                a[i]=a[key];
                a[key]=temp;
            }
        }
    }
    public   static int selectMinKey(int a[],int i){
        int key=i;
        for (int j = i+1; j <a.length ; j++) {
            if (a[key]>a[j]){
                key=j;
            }
        }
        return  key;
    }

希尔排序

 public  static  void  ShellInsertSort(int a[],int dk){
        for (int i = dk; i <a.length ; i++) {
            if(a[i] < a[i-dk]){          //若第i个元素大于i-1元素,直接插入。小于的话,移动有序表后插入
                int j = i-dk;
                int x = a[i];           //复制为哨兵,即存储待排序元素
                a[i] = a[i-dk];         //首先后移一个元素
                while(j>0&&x < a[j]){     //查找在有序表的插入位置
                    a[j+dk] = a[j];
                    j -= dk;             //元素后移
                }
                a[j+dk] = x;            //插入到正确位置
            }
        }
    }
    public static  void  shellSort(int a[],int n){//n为增量,当n为1时,整个数组就是一个表项序列
        int dk = n/2;
        while( dk >= 1  ){
            ShellInsertSort(a,dk);
            dk = dk/2;
        }
    }

 

posted @ 2017-01-20 09:22  Mr殇城  阅读(111)  评论(0编辑  收藏  举报