排序之初级篇

排序算法之初级排序

冒泡排序

原理:计较相邻两个元素,将较大元素替换到后面,经历n-1次趟后,数组就排好序了。

代码:

public static void bubbleSort2(int[] nums){
    if (nums.length == 0)
        return;
    int n = nums.length;
    for (int i=0;i nums[j+1]){
                int tmp = nums[j];
                nums[j] = nums[j+1];
                nums[j+1] = tmp;
            }
        }
    }
    return;
}

时间复杂度:O(N^2) 空间复杂度:O(1) 稳定性排序 数组的初始排列并不影响时间复杂度

插入排序

原理:假定前面的元素已经排好序了,不断比较前面的数据元素,直至找到合适插入位置。

代码:

public static void insertSort2(int[] nums){
    int n = nums.length;
    for (int i=1;i=0;j--){
            if (nums[j] > tmp){
                nums[j+1] = nums[j];
            }else {
                break;
            }
        }
        nums[j+1] = tmp;
    }

}

时间复杂度:O(N^2) 空间复杂度:O(1) 稳定性排序

评价:比冒泡排序好,因为它可以提前结束循环,对于近乎有序的数组,它的时间复杂度为O(N)。

选择排序

原理:不断在剩下的元素中进行比较然后找出最小的元素。

代码:

public static void selectSort2(int[] nums){
    int n = nums.length;
    for (int i=0;i

时间复杂度:O(N^2) 空间复杂度:O(1) 稳定性排序 数组的初始排列并不影响其时间复杂度。

你可能感兴趣的:(排序,java)