Java的 冒泡排序,插入排序

  /*** 冒泡排序法,  注意这里是降序 */
    public int[] bubleSort(int[] intArr){
        int length = intArr.length;

        for (int i=0; i<length; i++){
            for (int j=i+1; j<length; j++){
                if (intArr[j] > intArr[i]){
                    int temp = intArr[j];
                    intArr[j] = intArr[i];
                    intArr[i] = temp;
                }
            }
        }

        return intArr;
    }
这里如果要改为升序,只需将  intArr[j] > intArr[i] 改为intArr[j] < intArr[i] 

当然,冒泡排序 可以优化

在某些时候,循环还未终止,整个数组已经排好序,此时应及时终止循环。

(冒泡每次都会比较相邻两个数并交换次序不对的组,若一次循环后,都没进行交换,则已经完成排序)

public class Bubble {
    public static void sort(int[] arr){
        int temp;
        boolean changed;
        for(int i = 0;i < arr.length-1;i++){
            changed = false;
            for(int j = 0;j < arr.length-1-i;j++){
                if(arr[j]>arr[j+1]) {
                    swap(arr,j,j+1);
                    changed = true;
                }
            }
            if(!changed){
                break;
            }
        }
    }
    public static void swap(int []arr,int a ,int b){
        int temp=arr[a];
        arr[a] = arr[b];
        arr[b] = temp;
    }
}

插入排序:

从第二个元素开始,将当前元素插入到前面对应位置,使当前元素i 和之前元素形成有序数组。 
比较规则:
 正常:
从第一个元素开始,若当前元素i小于有序数组中的元素j,则从该元素开始将有序数组依次后移一位,
并将当前元素i放置到该元素j位置。(插入)

 简易:
 从有序数组最后一个元素开始,若当前元素i小于该元素j,则交换当前元素和该元素。
注意这里是升序

public class Insertion {
 
    public static void sort(int[] arr){
        int pos,temp;
        for(int i=1;i<arr.length;i++){
            pos = i;
            while(pos!=0  &&  arr[pos]<arr[pos-1]){
                temp = arr[pos];
                arr[pos] = arr[pos-1];
                arr[pos-1] = temp;
                pos--;
            }
        }
    }
}

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页