java

java排序算法

java排序算法

前言

之前写过这篇文章, 但是没有备份好, 数据丢失, 重新花时间写一下, 也顺便温习一下

一. 冒泡排序(Bubble)

  • 简单理解 : 循环循环, 第一次最大的挑出来放最后一位, 第二次次大的挑出来放倒数第二位......
  • 基本原理 : 对于给定的n个记录,从第一个记录开始依次对相邻的两个记录进行比较,当前面的记录大于后面的记录时,交换位置,进行一轮比较和换位后,n个记录中的最大记录将位于第n位;然后对前(n-1)个记录进行第二轮比较;重复该过程直到进行比较的记录只剩下一个为止。
  • 代码 :
public class Test {
    public static void main(String[] args) {
        //定义数组
        int[] array = new int[]{10,8,6,2,1,5,3,9,4,7};
        //循环
        for (int i = array.length - 1; i > 0; i--) {
            //循环, 第一次循环10次取出最大, 第二次循环9次取出次大
            for (int j = 0; j < i; j++) {
                int a = array[j];
                int b = array[j+1];
                if (a > b) {
                    array[j+1] = a;
                    array[j] = b;
                }
            }
        }
        System.out.println(JSON.toJSONString(array));
    }
}
打印结果:[1,2,3,4,5,6,7,8,9,10]

二. 选择排序(QuickSort)

  • 简单理解 : 第一次将最小的放在第一位, 第二次将次小的放在第二位......
  • 基本原理 : 对于给定的一组记录,经过第一轮比较后得到最小的记录,然后将该记录与第一个记录的位置进行交换;接着对不包括第一个记录以外的其他记录进行第二次比较,得到最小的记录并与第二个记录进行位置交换;重复该过程,直到进行比较的记录只有一个为止。
  • 代码 :
      public static void main(String[] args) {
        int[] array = new int[]{10, 8, 6, 2, 1, 5, 3, 9, 4, 7};
        for (int i = 0; i < array.length; i++) {
            //每次循环临时最小
            int temp = array[i];
            //用来交换
            int flag = i;
            for (int j = i; j < array.length; j++) {
                int a = array[j];
                if (a < temp){
                    //赋值给最小
                    temp = a;
                    //同时记录此时的游标
                    flag = j;
                }
            }
            array[flag] = array[i];
            array[i] = temp;
        }
        System.out.println(JSON.toJSONString(array));
    }
    打印结果:[1,2,3,4,5,6,7,8,9,10]

三. 插入排序(QuickSort)

  • 简单理解 : 从头排序, 第一次取第一个数排序, 第二次去前两个, 第三次.......
  • 对于给定的一组数据,初始时假设第一个记录自成一个有序序列,其余记录为无序序列。接着从第二个记录开始,按照记录的大小依次将当前处理的记录插入到其之前的有序序列中,直至最后一个记录插入到有序序列中为止。
    public static void main(String[] args) {
        int[] array = new int[]{10, 8, 6, 2, 1, 5, 3, 9, 4, 7};

        for (int i = 0; i < array.length-1; i ++){
            //从头排序
            for (int j = i; j >= 0; j--) {
                int a = array[j];
                int b = array[j + 1];
                if (a > b){
                    array[j + 1] = a;
                    array[j] = b;
                }
            }
            System.out.println(JSON.toJSONString(array));
        }
    }
     打印结果:[1,2,3,4,5,6,7,8,9,10]

待续...

  • 希尔排序
  • 快速排序

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!
文章若有侵权请立即与我联系, 我将及时处理
微信扫一扫,向我赞赏

微信扫一扫,向我赞赏

微信扫一扫,向我赞赏

支付宝扫一扫,向我赞赏

回复

This is just a placeholder img.
Title - Artist
0:00