【算法与数据结构】十大排序算法详解之冒泡排序、选择排序

关于排序算法

在这里插入图片描述
在这里插入图片描述

洛谷例题:【模板】排序

以下排序方法,均以 P1177 【模板】排序 为例题,但是这两种算法时间复杂度太高,超出时间限制。
在这里插入图片描述

冒泡排序

冒泡排序的基本思想是:通过相邻元素之间的比较和交换,将排序码小的元素逐渐从底部移向顶部。由于整个排序的过程就像水底下的气泡一样逐渐向上冒,因此称为冒泡排序。

具体操作步骤:

  • 比较相邻的两个元素。如果第一个元素比第二个元素大,就交换这两个元素;
  • 重复上述步骤,直到数组末尾;
  • 重复上述两个步骤,直到完成排序。
    在这里插入图片描述

Java代码:

import java.util.Scanner;
public class test1177 {
    
    
    public static void main(String[] args) {
    
    
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        int[] arr = new int[5];
        for (int i=0;i<arr.length;i++) {
    
    
            arr[i] = sc.nextInt();
        }
        for (int i=0;i<arr.length-1;i++) {
    
    
            for (int j=0;j< arr.length-1;j++) {
    
    
                int temp = arr[j];
                if(arr[j]>arr[j+1]) {
    
    
                    arr[j]= arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
        System.out.println(arr);
    }
}

选择排序

选择排序的原理是:首先子未排序序列中找到最小(大)元素,存放到排序的起始位置,然后,再从剩余末排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,知道所有的元素均已排序完毕。

具体操作步骤:

  • 在数列范围内找到最小(大)元素,与起始位置元素进行交换;
  • 除已经排序过的元素外,在剩余数列范围内找到最小(大)元素,与剩余数列的起始位置元素进行交换;
    在这里插入图片描述

Java代码:

public static void main(String[] args) {
    
    
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        int[] arr = new int[num];
        for (int i=0;i<arr.length;i++) {
    
    
            arr[i] = sc.nextInt();
        }
        for (int i = 0; i < arr.length; i++) {
    
    
            int index = i;
            for (int j = i; j < arr.length; j++) {
    
    
                if (arr[j] < arr[index])
                    index = j;
            }
            int temp = arr[index];
            arr[index] = arr[i];
            arr[i] = temp;
        }
        System.out.println(arr);
    }

猜你喜欢

转载自blog.csdn.net/aDiaoYa_/article/details/130526677