数据结构--排序(Java实现)

冒泡排序:

public void Bubble_Sort(int a[]){
        int flag = 0;//标识位,如果初始有序,不再进行操作
        int temp;
        for(int i=0; i<a.length-1; i++){
            for(int j=0; j<a.length-i-1; j++){
                if(a[j]>a[j+1]){
                    temp = a[j];
                    a[j] = a[j+1];
                    a[j+1] = temp;
                    flag = 1;
                }
            }
            if(flag == 0){
                break;
            }
        }
        
        for(int i=0; i<10; i++){
           System.out.println(a[i]);
        }
    }  

直接插入排序:

public void Insert_Sort(int[] a){
        int temp;
        int j=0;
        for(int i=1; i<a.length-1; i++){
            temp = a[i];
            for(j=i-1; j>=0; j++){
                if(a[j]>temp){
                    a[j+1] = a[j];
                 }else{
                    break;
                }
            }
            a[j+1] = temp;
        }
        
        for(int i=0; i<10; i++){
           System.out.println(a[i]+"");
        }
    }

一般快速排序(默认第一个元素为枢纽):

public void Quick_Sort(int a[], int lo, int hi){
        int i,j;
        if(lo>=hi){
            return;
        }
        
        i = lo;
        j = hi;
        int pivot = a[i];
        while(i<j){
            while((i<j)&&(pivot <= a[j])){
                j--;
            }
            if(i<j){
                a[i] = a[j];
                i++;
            }
            while((i<j)&&pivot>=a[i]){
                i++;
            }
            if(i<j){
                a[j] = a[i];
                j--;
            }
        }
        a[i] = pivot;
        System.out.println("第一趟j="+j);
        Quick_Sort(a, lo, j-1);
        Quick_Sort(a,j+1, hi);
    }

快速排序优化(三者取中):

public void Quick_mid(int a[], int lo, int hi){ 
        if(lo>=hi){
            return;
        }
        int i,j,pivot;
        i = lo;
        j = hi-1;
        int t = (int)((lo+hi)/2);
        pivot = a[t];
        
        a[t] = a[hi];
        while(i<j){
            while((i<j)&&(a[i]<=pivot)){
                i++;
            }
            while((i<j)&&(a[j]>=pivot)){
                j--;
            }
            if(i<j){
                int temp = a[i];
                a[i] = a[j];
                a[j] = temp;
                
            }
        }if((i==j)&&(a[i]>pivot)){
            a[hi] = a[i];
            a[i] = pivot;
        }else{
            a[hi] = a[i+1];
            a[++i] = pivot; //注意:i自加1
        }
        Quick_mid(a, lo,i-1);
        Quick_mid(a, i+1, hi);
    }

简单排序:

public void Simple_Sort(int a[], int n){
        int i, j;
        for(i=0; i<n; i++){
            int t = i;//记录最小元素下表
            for(j=i+1; j<n; j++){
                if(a[t] > a[j]){
                    t = j;
                }
            }
            if(t!=i){
                int temp = a[t];
                a[t] = a[i]; 
                a[i] = temp;
            }
        }
    }
发布了39 篇原创文章 · 获赞 1 · 访问量 1132

猜你喜欢

转载自blog.csdn.net/qq_39421693/article/details/104716307