一、冒泡排序
冒泡排序概念图
- 冒泡排序参考代码
void bubblesort(int arr[],int len){
int i,j,temp; //i j 循环变量 temp 临时变量
for(i = 0;i < len-1; i++){ //外层循环 控制趟数
for(j = 0;j < len-i-1; j++){ //内层循环 控制比较次数
if(arr[j]<arr[j-1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
//遍历
}
- 冒泡排序思想
对列表每两个相邻的数比较大小,如果前边的比后边的大(或小),那么这两个数就互换位置(每一轮比较都会挑出一个最大值或最小值放在最后)。
二、选择排序
选择排序概念图
- 选择排序参考代码
void selectsort(int arr[],int len){
int i,j; //循环变量定义
for(i = 0;i < len; i++){
int min = i; //定义 min 存放 最小值下标
for(j = i+1;j < len; j++){
if(arr[j] > arr[min]){
min = j; //更新最小值下标
}
}
if(min != i){ //进行数据交换
int temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
}
//遍历
}
- 选择排序思想
第一次从待排序的数据元素中选出最小(或最大)的一个元素,放在最前边,然后再从剩余的未排序列中寻找最大或者最小元素,然后放在已排序列末尾,依次执行直到排序结束。
三、直接插入排序
直接插入排序概念图
- 直接插入排序参考代码
void insertSort(int arr[],int len){ int i,j; //循环变量 for(i = 1;i < len; i++){ int temp = arr[i]; //作为基准值 for(j = i-1;j >= 0 && arr[j] > temp; j--){ arr[j+1] = arr[j]; } arr[j+1] = temp; } }
- 直接插入排序思想
插入排序是一种简单直观的排序算法。他的工作原理是通过构建有序序列,对未排序数据,在已排序序列从后向前扫描,找到相应的位置并插入。将后面的每个数,依次往前移动,直到找到它恰好能放的位置。