数组排序算法

排序算法的功能

无序数组变成有序数组

排列算法

图示

数组排序算法_第1张图片

头疼的问题

①循环时,不好确定终止条件,多一次或少一次,都有可能造成错误。

②递归、循环的最后一步,有时需要额外处理。

我的建议

①多重循环,先实现内层一次循环,再逐步加码。

选择排序

    public static void choiceSort(int[] arr){
        for(int circlenum=0;circlenumarr[maxIndex]){
                    maxIndex=i;
                }
            }
            int temp=arr[maxIndex];
            arr[maxIndex]=arr[lastIndex];
            arr[lastIndex]=temp;
        }
    }

冒泡排序

public static void bubbleSort(int[] arr){
        for(int num=0;numarr[i+1]){
                    int temp=arr[i];
                    arr[i]=arr[i+1];
                    arr[i+1]=temp;
                }
            }
        }
}

快速排序

public static void fastSort(int[] arr,int begin,int end){
        int length=end-begin+1;

        if(length<=1){
            return;
        }
        if(length==2){
            if(arr[begin]>arr[end]){
                int temp=arr[begin];
                arr[begin]=arr[end];
                arr[end]=temp;
            }
            return;
        }

        int beginPoint=begin+1;
        int endPoint=end;
        while(beginPointendPoint){
                    break;
                }
            }
            while(arr[endPoint]>arr[begin]){
                endPoint--;
                if(beginPoint>endPoint){
                    break;
                }
            }

            if(beginPoint>endPoint){
                break;
            }

            int temp=arr[beginPoint];
            arr[beginPoint]=arr[endPoint];
            arr[endPoint]=temp;
        }

        int temp=arr[begin];
        arr[begin]=arr[endPoint];
        arr[endPoint]=temp;

        fastSort(arr,begin,endPoint-1);
        fastSort(arr,beginPoint,end);
}

插入排序

public static void insertSort(int[] arr){
        for(int num=0;num=0;i--){
                if(arr[i]>insertNum){
                    arr[i+1]=arr[i];
                    if(i==0){
                        arr[0]=insertNum;
                    }
                }else{
                    arr[i+1]=insertNum;
                    break;
                }

            }
        }
}

归并排序

    public static void combineSort(int[] arr,int begin,int end){
        int length=end-begin+1;
        System.out.println(123);
        if(length<=1){
            return;
        }

        int middle=(begin+end)/2;
        combineSort(arr,begin,middle);
        combineSort(arr,middle+1,end);

        int firstPoint=begin;
        int secondPoint=middle+1;
        int[] tempArr=new int[length];
        int i=0;
        while(firstPoint<=middle&&secondPoint<=end){
            if(arr[firstPoint]

你可能感兴趣的:(java)