美文网首页
Java实现简单选择排序、冒泡排序、快速排序

Java实现简单选择排序、冒泡排序、快速排序

作者: MiBoy | 来源:发表于2020-06-21 13:49 被阅读0次

排序是编程中必不可少的一个环节。那么选择一个好的排序算法会增加代码的运行效率。下边主要写一下编程中常用的几种排序算法。

排序的稳定性是指:在一组待排序记录中,如果存在任意两个相等的记录R和S,且待排序记录中R在S前,如果在排序后R依然在S前,即他们的前后位置在排序前后不发生改变,则称该算法为稳定的。不稳定的排序只需一个反例来说明,而稳定的算法则需要证明,因为我们无法验证所有的实例。

排序方法 平均复杂度 最坏情况下时间复杂度 额外空间复杂度 稳定性
简单选择排序 O(N^2) O(N^2) O(1) 不稳定
直接插入排序 O(N^2) O(N^2) O(1) 稳定
冒泡排序 O(N^2) O(N^2) O(1) 稳定
堆排序 O(N log 2 N) O(N log 2 N) O(1) 不稳定
快速排序 O( log 2N$) O(N^2) O(1) 不稳定
PS:简书不支持数据公式编辑器

()![https://img.haomeiwen.com/i2243690/da1c8b997a16c17c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240]

冒泡排序

就是把最大的数字挪到最右边,比较相邻两个数据,谁大谁在右,指针可以都是从左往右,内循环要写成j-1-i

  private static void BubbleSort() {
    int arr[] = {44, 12, 59, 36, 62, 43, 94, 7, 35, 52, 85};

    int length = arr.length;
    boolean flag;
    int temp;
    for (int i = length - 1; i >= 0; i--) {
      flag = false;
      for (int j = 0; j < i; j++) {
        if (arr[j] > arr[j + 1]) {
          temp = arr[j];
          arr[j] = arr[j + 1];
          arr[j + 1] = temp;
          flag = true;
        }
      }
      print(arr);
      if (!flag) break;//这是过滤掉最后整个数组都有序的情况,这会增加一些性能,但是 评价复杂度是不会变的7
    }
  }

 public static void print(int[] arr) {
    if (arr != null) {
      for (int i = 0; i < arr.length; i++) {
        System.out.print(arr[i] + "-");
      }
    }
    System.out.println();
  }

打印结果

12-44-36-59-43-62-7-35-52-85-94-
12-36-44-43-59-7-35-52-62-85-94-
12-36-43-44-7-35-52-59-62-85-94-
12-36-43-7-35-44-52-59-62-85-94-
12-36-7-35-43-44-52-59-62-85-94-
12-7-35-36-43-44-52-59-62-85-94-
7-12-35-36-43-44-52-59-62-85-94-
7-12-35-36-43-44-52-59-62-85-94-

  • 时间复杂度:O(N的平方)。

简单选择排序

思想:找到最小的一个数,并与前面的数交换,依次排列

相关文章

  • 排序算法Java实现

    本文会通过Java语言实现:冒泡排序,插入排序,选择排序,归并排序,快速排序,桶排序,计数排序,基数排序,希尔排序...

  • 五种常见排序算法实现(Java)

    Java-五种排序算法实现 前言及准备 这篇我们会介绍比较简单的五种排序算法:插入排序、冒泡排序、快速排序、选择排...

  • 实现几种常见排序方法

    Java实现几种常见排序方法 日常操作中常见的排序方法有:冒泡排序、快速排序、选择排序、插入排序、希尔排序,甚至还...

  • Datawhale | 编程第6期 Test 3

    排序 1.实现归并排序、快速排序、插入排序、冒泡排序、选择排序、堆排序(选做) 归并排序 快速排序 插入排序 冒泡...

  • 面试知识点

    排序冒泡排序快速排序选择排序插入排序二路归并 查找二分查找 排序和查找的java实现 java语言Java字符串字...

  • JavaScript实现排序算法

    实现了冒泡,选择,插入,快排,希尔,归并 冒泡排序 选择排序 插入排序 快速排序 希尔排序 归并排序

  • 常用排序算法的Java实现

    冒泡、插入、选择、归并、快速排序的Java实现

  • 冒泡排序 选择排序

    冒泡排序 java 实现 C 实现 选择排序 java 实现 C 实现

  • 数据结构&算法(一)

    一、Java实现快速排序算法 二、Java实现折半插入排序算法 三、Java实现冒泡排序算法

  • 十大经典排序算法(java实现)

    前言 本文我们将以java代码实现十大经典排序算法,包括冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序...

网友评论

      本文标题:Java实现简单选择排序、冒泡排序、快速排序

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