三大基础排序算法(冒泡排序,选择排序,插入排序) |
您所在的位置:网站首页 › 3种排序方法 › 三大基础排序算法(冒泡排序,选择排序,插入排序) |
文章目录
三大基础排序算法(冒泡,选择,插入)一.冒泡排序法原理解析:代码实现:注意:
二.选择排序法原理解析:代码实现:注意:
三.插入排序法原理解析:代码实现:
三大基础排序算法(冒泡,选择,插入)
一.冒泡排序法
原理解析:
时间复杂度: 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 |