美文网首页
冒泡,选择,插入排序

冒泡,选择,插入排序

作者: haha123409 | 来源:发表于2019-02-23 11:29 被阅读0次

    package basic_01;

    /*

    * 冒泡算法:稳定,时间:n^2,相邻两个数值进行比较。end边界逐渐减小,先确定end外层循环的变化形式,再确定内层循环比较的变化形式,

    * 简单选择排序算法:不稳定,时间:n^2,相邻两个数值进行比较。左侧边界逐渐增大。

    * 插入排序算法:稳定,时间:n^2,每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的字序列的合适位置,直到全部插入排序完为止。

    *

    *

    * */

    public class Code_00_Bubble_select_insert {

    public static void main(String[] args) {

    int[] arr = { 15, 27, 36, 59, 42, 8 };

    bubbleSort(arr);

    printarr(arr);

    }

    public static void bubbleSort(int[] arr) {

    if (arr == null || arr.length < 2) {

    return;

    } // 刨除特殊情况

    for (int end = arr.length - 1; end > 0; end--) {

    for (int i = 0; i < end; i++) {

    if (arr[i] > arr[i + 1]) {

    swap(arr, i, i + 1);

    }

    }

    } // 注意i的边界条件,i应该截止到end的左侧

    }

    public static void selectSort(int[] arr) {

    if (arr == null || arr.length < 2) {

    return;

    } // 刨除特殊情况

    for (int i = 0; i < arr.length - 1; i++) {

    int less = i;//定义一个变量用来存放最小值

    for (int j = i + 1; j < arr.length; j++) {

    less = arr[i] > arr[j] ? j : i;

    }

    swap(arr, less, i);

    }

    }//注意j的开始条件,应该是i右侧的值

    public static void insertSort(int[] arr) {

    if (arr == null || arr.length < 2) {

    return;

    } // 刨除特殊情况

    for (int i = 1; i < arr.length; i++) {

    for (int j = i - 1; j >= 0; j--) {

    if (arr[j] > arr[j + 1]) {

    swap(arr, j, j + 1);

    }

    }

    }

    }// 内层循环:类似与插牌,不断的将第j个数据与前j个数据进行比较,排好序;不断向前推进

    public static void swap(int[] arr, int i, int j) {

    int temp = arr[i];

    arr[i] = arr[j];

    arr[j] = temp;

    }

    public static void printarr(int[] arr) {

    for (int i = 0; i < arr.length; i++) {

    System.out.print(arr[i] + "\t");

    }

    }

    }

    相关文章

      网友评论

          本文标题:冒泡,选择,插入排序

          本文链接:https://www.haomeiwen.com/subject/fimuextx.html