排序算法

最近这一周,师兄布置的任务真是不少。把选择排序,冒泡排序,希尔排序,插入排序,快速排序在一周之内看了差不多。忽然感觉自己原来有这么大的能量啊。我自己都佩服我自己。加油!继续看贪心算法和动态规划。
仅仅有梦想是不够的,还得有实力!
希望四年之后,能够在编程上有所突破。成为一个能做出产品给人们生活带来便利的人!
一周时间,终于把各种排序算法有了最基本的了解。代码改了十几遍。终于完成了初稿,参考了很多大神的代码,在此一并感谢!

package wode;

public class Example11 {
//写一个交换数组的方法
static void swap(int a,int b){
        int temp;
        temp=a;
        a=b;
        b=temp;
    }
//写一个产生随机数的方法
static int[] random(){
        int[] e =new int[100000];       
        java.util.Random r= new java.util.Random();
        for(int i=0;i<100000;i++){
            e[i]=r.nextInt();


        }
        return e;
    }
//写一个打印数组的方法
static void print(int[] a){
        for(int i=0;i<a.length;i++){
            System.out.print(a[i]+"   ");
        }

    }
//快速排序1
static void quick_sort1(int s[], int l, int r)  
{  
    if (l < r)  
    {  
        int i = l, j = r, x = s[l];  
        while (i < j)  
        {  
            while(i < j && s[j] <= x) 
                j--;    
            if(i < j)   
                s[i] = s[j];  

            while(i < j && s[i] >= x) 
                i++;    
            if(i < j)   
                s[j] = s[i];  
        }  
        s[j] = x;  
        quick_sort1(s, l, j - 1); 
        quick_sort1(s, j + 1, r);  
    }  
}  
//快速排序2
static int quick_sort2(int[] a,int beg,int end){  
    int last = a[end];  
    int i = beg -1;  
    for (int j = beg; j <= end-1; j++) {  
        if(a[j] <= last){  
            i++;  
            if(i != j){  
                a[i] = a[i]^a[j];  
                a[j] = a[i]^a[j];  
                a[i] = a[i]^a[j];  
            }  
        }  
    }  
    if((i+1) != end){  
        a[i+1] = a[i+1]^a[end];  
        a[end] = a[i+1]^a[end];  
        a[i+1] = a[i+1]^a[end];  
    }  
    return i+1;  
}  

//选择排序
static void  sort(int[] a){

        for(int i=0;i<a.length;i++){
            int idx=0;

            for(int j=0;j<i;j++){
                if(a[j]>a[idx])
                {
                    idx=j;

                }
            }
            swap(a[i],a[idx]);
        }

    }
//冒泡排序
static void  bubbleSort(int [] a){

    int min=0;
    for(int i=0;i<a.length;i++){
        min=i;
        for(int j=i+1;j<a.length;j++){
            if(a[min]>a[j]){
                min= j;
            }
        }
    if (i!=min){
        swap(a[min],a[i]);
    }
    }



}   
//  插入排序
 static void insertSort(int[] array){
        for(int out=1;out<array.length;out++){
            int temp= array[out];
            int in= out;
            while(in>0&&temp<array[in-1]){
                array[in]=array[in-1];
                in--;
            }
            array[in]=temp;
        }

    }



//  希尔排序
static void shellsort(int a[] ,int n){
        int j,gap;
        for(gap=n/2;gap>0;gap/=2){
            for(j=gap;j<n;j++){
                if(a[j]<a[j-gap]){
                    int temp=a[j];
                    int k=j-gap;
                    while(k>=0&&a[k]>temp){
                        a[k+gap]=a[k];
                        k-=gap;
                    }
                    a[k+gap]=temp;
                }
            }
        }
    }



public static void main(String[] args){
    int[] e1=random();
    long a1=System.currentTimeMillis();
    quick_sort1(e1,0,e1.length-1);
    long b1=System.currentTimeMillis();
    System.out.println("快速排序1用时"+(b1-a1));
    int[] e6=random();
    long a6=System.currentTimeMillis();
    quick_sort1(e6,0,e1.length-1);
    long b6=System.currentTimeMillis();
    System.out.println("快速排序2用时"+(b6-a6));
    int[] e2=random();
    long a2=System.currentTimeMillis();
    sort(e2);
    long b2=System.currentTimeMillis();
    System.out.println("选择排序用时"+(b2-a2));
    int[] e3=random();
    long a3=System.currentTimeMillis();
    bubbleSort(e3);
    long b3=System.currentTimeMillis();
    System.out.println("冒泡排序用时"+(b3-a3));
    int[] e4=random();
    long a4=System.currentTimeMillis();
    shellsort(e4,e4.length-1);
    long b4=System.currentTimeMillis();
    System.out.println("希尔排序用时"+(b4-a4));
    int [] e5=random();
    long a5=System.currentTimeMillis();
    insertSort(e5);
    long b5=System.currentTimeMillis();
    System.out.println("插入排序用时"+(b5-a5));

}


}

不忘初心,方得始终!加油!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值