java中几种排序的实现

1.最简单的冒泡排序shell

/**
 * 冒泡排序
 */
public static void bubbleSort(){
    int[] arr = {5,8,1,2,9,8,7,4};
    System.out.println("排序前的数组为:" );
    for (int num : arr){
        System.out.println(num + " ");
    }
    for (int i =0; i<arr.length;i++){
        for(int j =0 ; j<arr.length-1-i; j++){
            if(arr[j] > arr[j+1]){
                int tem = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = tem;
            }

        }
    }
    System.out.println();
    System.out.println("排序后的数组为:");
    for (int num : arr){
        System.out.println(num + " ");
    }
}

2.插入排序数组

/**
 * 插入排序
 * 思想:假设前面的几个是按照顺序排好的,
 * 以后的每个元素会与以前有顺序的数组中值比较直到找到那个小于
 * 他的就会交换位置,以此类推
 * @param arr
 * @return
 */
public static int[] inserSort(int[] arr){
    int temp = 0;
    for (int i = 0; i<arr.length; i++){
        int j = i-1;
        temp = arr[i];
        for (;j >=0 && temp<arr[j];j--){
            arr[j+1] = arr[j];//将大与于temp的值日后移一个单位
        }
        arr[j+1] = temp;
    }

    return  arr;
}

3.希尔排序排序

/**
 * 希尔排序
 * 将数组分红d分红若干份,其他的就是按照插入排序来完成的,直到d=1就表示数组已经排好序了
 * @param arr
 * @return
 */
public static int[] shellSort(int[] arr){
    double d1 = arr.length;
    int temp = 0;
    while (true){
        d1 = Math.ceil(d1/2);
        int d = (int) d1;
        for (int x = 0;x<d;x++){
            for (int i = x+d;i<arr.length;i+=d){
                int j = i-d;
                temp = arr[i];
                for (;j>=0 && temp<arr[j]; j-=d){
                    arr[j+d] = arr[j];
                }
                arr[j+d] = temp;
            }
        }
        if (d==1){
            break;
        }
    }
    return arr;

}

4.选择排序it

/**
 * 选择排序
 * 从数组中找到最小的而后和第一个交换位置,而后再剩下的里找最小的和第二个交换位置,
 * 循环直到倒数第二个数和最后一个数比较
 * @param arr
 * @return
 */
public static int[] selectSort(int[] arr){
    int position = 0;
    for (int i=0;i<arr.length;i++){
         position = i;
         int temp = arr[i];
        for (int j=i+1;j<arr.length;j++){
            if(arr[j]<temp){
                temp = arr[j];
                position = j;
            }
        }
        arr[position] = arr[i];
        arr[i] = temp;
    }
    return arr;
}

5.快速排序,稍后会写上io

相关文章
相关标签/搜索