几种排序算法

排序方法有: 插入排序(直接插入排序,希尔排序),交换排序(冒泡排序,快速排序),选择排序(直接选择排序,堆排序),归并排序,分配排序(箱排序,基数排序)。

  1. 选择排序算法实现10个1~100 随机数字的排序,代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    public class SelectSort{
    // 选择排序方法
    public static void SelectionSort(int[] num) {
    for (int i =0;i<num.length -1;i++) {
    int m = i;
    for (int j = i+1;j<num.length;j++) {
    if (num[j] < num[m])
    m = j;
    }
    if (i != m)
    swap(num,i,m);
    }
    }
    // 用于交换数组中索引为 i,j 的元素
    private static void swap(int[] num,int i,int j) {
    int t;
    t = num[i];
    num[i] = num[j];
    num[j] = t;
    }
    public static void main(String[] args) {
    // 定义一个数组
    int[] num = new int[100];
    for (int i = 0;i < num.length; i++) {
    num[i] = (int) (Math.random() * 100) + 1;
    }
    // 排序
    SelectionSort(num);
    for (int i = 0;i < num.length; i++) {
    System.out.println(i);
    }
    }
    }
  2. 冒泡排序算法代码如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    import java.util.Random;
    import java.util.Array;

    public class BubbleSort {
    public static void main(String[] args) {
    int[] arr = new int[100];
    for (int i = 0; i < arr.length; i++) {
    Random ran = new Random();
    arr[i] = ran.nextInt(100);
    }
    System.out.println(Arrays.toString(arr));

    // 冒泡排序
    for (int i = 0;i < arr.length -1;i++) {
    for (j = 0; j < arr.length -i-1;j++) {
    if (arr[j] > arr[j+1]) {
    int t = arr[j];
    arr[j] = arr[j+1];
    arr[j+1] = t;
    }
    }
    }
    // 冒泡排序结束
    System.out.println(Arrays.toString(arr));
    }
    }
  3. 快速排序算法代码如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    public class QuickSort {
    public static void sort(int[] num) {
    quickSort(num,0,num.length -1);
    }
    // 快速排序方法
    private static void quickSort(int[] num,int left,int right) {
    if (left < right) {
    int s = num[left];
    int i = left;
    int j = right +1;
    while (true) {
    // 向右找大于s的数的索引
    while (i +1 < num.length && num[++i] < s)
    ;
    while (j-1 > -1 && num[--j] > s)
    ;
    // 如果 i >= j, 退出循环
    if (i >= j) {
    break;
    }
    // 否则交换索引 i和j 的元素
    swap(num,i,j);
    }
    num[left] = num[j];
    num[j] = s;
    // 对左边进行递归
    quickSort(num,left,j-1);
    // 对右边进行递归
    quickSort(num,j+1,right);
    }
    }
    // 交换 数组中索引为i,j 的元素
    private static void swap(int[] num,int i,int j) {
    int t;
    t = num[j];
    num[i] = num[j];
    num[j] = t;
    }
    public static void main(String[] args) {
    int[] arr = new int[100];
    for (int i = 0; i < arr.length; i++) {
    Random ran = new Random();
    arr[i] = ran.nextInt(100);
    }
    sort(arr);
    for (int i =0;i<arr.length;i++) {
    System.out.println(arr[i]);
    }
    }
    }
-------------本文结束感谢您的阅读-------------
Thank you for your encouragement