三大基础排序算法(冒泡排序,选择排序,插入排序)

您所在的位置:网站首页 3种排序方法 三大基础排序算法(冒泡排序,选择排序,插入排序)

三大基础排序算法(冒泡排序,选择排序,插入排序)

2023-08-13 13:04| 来源: 网络整理| 查看: 265

文章目录 三大基础排序算法(冒泡,选择,插入)一.冒泡排序法原理解析:代码实现:注意: 二.选择排序法原理解析:代码实现:注意: 三.插入排序法原理解析:代码实现:

三大基础排序算法(冒泡,选择,插入) 一.冒泡排序法 原理解析:

时间复杂度: O(n²)

比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 代码实现:

通过两层循环全套实现

外层循环:冒泡趟数

内层循环:冒泡次数

注意:

1 每多排好一个数据,可以将内层循环次数减少一次,从而提高效率.

2 总共只需要为n - 1个数据排序,剩下的一个是最小值,不需要再排序

int main() { // 定义一个未序一维数组 int arr[10] = { 1,3,6,9,5,8,-1,2,5,7 }; // 冒泡排序 // 外层循环: 控制比较的"趟数",每一趟排好一个数据 for (int i = 9; i > 0; i--) { // 内层循环: 控制比较的"次数" // 次数受外层循环控制 每趟少比较一次 for (int j = 0; j // 交换 arr[j] = arr[j] ^ arr[j + 1]; arr[j + 1] = arr[j] ^ arr[j + 1]; arr[j] = arr[j] ^ arr[j + 1]; } } } // 输出 for (size_t i = 0; i // 定义一个未序一维数组 int arr[10] = { 1,3,6,9,5,8,-1,2,5,7 }; // 选择排序 int maxIndex = 0; int temp; for (int i = 9; i > 0; i--) { maxIndex = 0; for (int j = 0; j maxIndex = j; } } if (maxIndex != i) { temp = arr[maxIndex]; arr[maxIndex] = arr[i]; arr[i] = temp; } } // 输出 for (size_t i = 0; i // 定义一个未序一维数组 int arr[10] = { 1,3,6,9,5,8,-1,2,5,7 }; // 插入排序 for (int i = 1; i // 比较 if (arr[j + 1] printf("%d ",arr[i]); } return 0; } r[j + 1] ^ arr[j]; } else break; // 减少多余的判断 } } // 输出 for (size_t i = 0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3