十大排序算法
权威文章:https://www.runoob.com/w3cnote/ten-sorting-algorithm.html
一、冒泡排序
解释:冒泡排序就是外层控制循环次数,内层控制将相邻的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; } }