冒泡排序和选择排序算法

一、冒泡排序

        1、算法步骤:

  1. 比较相邻的元素 : 如果第一个元素比第二个元素大,那么就交换他们两个
  2. 从第一对相邻的元素 开始比较 直到 最后一对,这样在最后的元素应该会是最大的数
  3. 针对所有的元素重复以上的步骤

        2、冒泡动态图:

        3、详细代码:

int[] arr = {6,5,7,4,3,2,1};
public static void bubble(int []arr) {
  for (int i = 0; i < arr.length - 1; i++) {     // -1,最后一趟不用比较
    for (int j = 0; j < arr.length - 1 - i; j++) {// -1,是为了防止越界.-i是为了每趟内少比较i次
          if (arr[j] > arr[j+1]) {
              int temp = arr[j+1];
              arr[j+1] = arr[j];
              arr[j] = temp;
          }
      }
  }
       // 遍历排序后的数组
  for (int i = 0; i < arr.length; i++) {
      System.out.print(arr[i]+" ");
  }
}

代码解读:这里冒泡算法被封装成函数,函数内第一个for循环是表示要循环几趟,减一是因为到最后趟时所有元素都有已经比较过了,所以最后一趟已经没有比较的意义了,第二个for循环是为了在还没有比较结束的队列里进行循环比较。

二、选择排序

        1、算法步骤:

  1. 在待排序的一组数据中,选出最大或者最小的一个数与第一个位置的数交换
  2. 然后在剩下的数中,再找最大或者最小的数与第二个位置的数交换位置
  3. 依次类推直到倒数第二个与最后一个交换位置,选择排序结束

        2、选择算法动态图

        3、详细代码

int[] arr = {9,6,5,7,4,8,3,2,10,1};
public static void choose(int []arr) {
        for (int i = 0; i < arr.length; i++) {
            int minIndex = i;
            for (int j = i; j < arr.length; j++) {
                if (arr[j] < arr[minIndex]) {
                    minIndex = j;       //记录最小值的下标
                }
            }

            int temp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = temp;
        }

        // 遍历排序后的数组
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
    }

代码解读:第一个循环是表示要循环几趟,然后定义一个最小值的下标,在第二层循环中,在没有循环到的序列中找出最小值的下标,然后在通过下标将循环到的元素与最小值进行交换。

相关推荐

  1. 冒泡排序选择排序--C语言

    2024-06-07 15:12:06       19 阅读
  2. 排序算法——冒泡排序

    2024-06-07 15:12:06       44 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-07 15:12:06       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-07 15:12:06       20 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-07 15:12:06       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-07 15:12:06       20 阅读

热门阅读

  1. 【无题】互联网时代,问题何去何从?

    2024-06-07 15:12:06       10 阅读
  2. 免费时间戳服务器url

    2024-06-07 15:12:06       11 阅读
  3. 如何开发地块建模

    2024-06-07 15:12:06       7 阅读
  4. 考上民办要不要去上

    2024-06-07 15:12:06       6 阅读
  5. 手机如何开启开发者选项? (小米为例)

    2024-06-07 15:12:06       11 阅读
  6. 未授权与绕过漏洞

    2024-06-07 15:12:06       8 阅读