十大排序算法

权威文章:https://www.runoob.com/w3cnote/ten-sorting-algorithm.html

  1. 冒泡排序
  2. 选择排序
  3. 插入排序
  4. 希尔排序

一、冒泡排序

解释:冒泡排序就是外层控制循环次数,内层控制将相邻的2个数据依次比较,结束后将在一端出现最大值/最小值

void bubbleSort(int data[],int size) {
    for (int i = 0; i < size-1; i++) {
        for (int j = 0; j < size-i-1; j++) {
            if (data[j] < data[j + 1]) {
                int temp = data[j];
                data[j] = data[j+1];
                data[j+1] = temp;
            }
        }
    }
}

二、选择排序

 解释:选择排序是依次找与当前元素比较,外层控制每个选组参与比较,内层控制其他元素与当前元素比较,判断是否需要交换。优化的是记录下标,内层遍历完再确定是否需要交换

void selectSort(int *arr,int size) {
    int index, temp;
    for (int i = 0; i < size-1; i++) {
        index = i;
        for (int j = i + 1; j < size; j++) {
            if (arr[j] > arr[index]) {
                index = j;
            }
        }
        if (index != i) {
            temp = arr[index];
            arr[index] = arr[i];
            arr[i] = temp;
        }
    }
}

三、插入排序

 图解:插入排序认为当前元素之前的序列已经是有序的,只需要找到需要插入的位置,进行插入

void insertSort(int* arr, int size) {
    int temp,j,i;
    for (i = 1; i < size ; i++) {
        temp = arr[i];
        for (j = i-1; j > -1; j--) {
            if (temp < arr[j]) {
                arr[j+1] = arr[j];
            }
            else {
                break;
            }
        }
        arr[j+1] = temp;
    }
}
原文地址:https://www.cnblogs.com/baizhuang/p/14004636.html