排序算法
2020-12-13 16:58
                         标签:算法   ddl   i++   选择排序   middle   static   int start   end   turn    排序算法 标签:算法   ddl   i++   选择排序   middle   static   int start   end   turn    原文地址:https://www.cnblogs.com/shanbaoxin/p/11622605.htmlpublic static void kuaipai(int[] arr, int lift, int right) {//快速排序
    int l = lift;
    int r = right;
    int p = arr[(lift + right) / 2];
    int temp = 0;
    while (l         while (arr[l]             l++;
        }
        while (arr[r] > p) {
            r--;
        }
        if (l >= r) {
            break;
        }
        temp = arr[r];
        arr[r] = arr[l];
        arr[l] = temp;
        if (arr[r] == p) {
            l++;
        }
        if (arr[l] == p) {
            r--;
        }
    }
    if (l == r) {
        l += 1;
        r -= 1;
    }
    if (lift         kuaipai(arr, lift, r);
    }
    if (l         kuaipai(arr, l, right);
    }
}
----------------------------------------------------------------------//给定三个颜色的数字,只有0,1,2,然后排序
public static int[] sort1(int[] arr){
    int zero=-1;
    int two=arr.length;
    for(int i=0;i
            i++;
        }else  if(arr[i]==0){
            int a=arr[i];
            arr[i]=arr[++zero];
            arr[zero]=a;
        }else{
            int a=arr[i];
            arr[i]=arr[--two];
            arr[two]=a;
        }
    }
    return arr;
}
///插入排序
public static int[] inster(int[] arr){
    for(int i=1;i
        int j=i-1;
        while (j>=0&&arr[j]>a){
            arr[j+1]=arr[j];
            j--;
        }
        arr[j+1]=a;
    }
    return arr;
}
//冒泡排序
public static int[] maopao(int[] arr){
    for (int i=0;i
                int temp=arr[j+1];
                arr[j+1]=arr[j];
                arr[j]=temp;
            }
        }
    }
    return arr;
}
//选择排序
public static int[] xuanze(int[] arr){
    for (int i=0;i
                int temp=arr[i];
                arr[i]=arr[j];
                arr[j]=temp;
            }
        }
    }
    return arr;
}
public static void sort2(int[] arr,int start,int end){
    if(start
        int r=end;
        int middle=(l+r)/2;
        sort2(arr,l,middle);
        sort2(arr,middle+1,l);
        merger(arr, start,middle, end);
    }
}
private static void merger(int[] arr,int start,int middle,int end){
    int[]  temp=new int[end-start+1];
    int l=start;
    int r=middle;
    int k=0;
    while(l
        }else {
            temp[k++]=arr[r++];
        }
        if(l
            }
        }
        if(r
            }
        }
    }
    for (int i=0;i
    }
}