2026/1/12 10:42:50
网站建设
项目流程
西安网站关键词优化推荐,有哪些网站用vue做的,好的品牌设计网站,企业网站设计与优化选择排序
学习目标#xff1a;
1.选择排序的基本思想
2.二元选择排序
3.冒泡排序和选择排序的异同
4.复杂度分析
1.选择排序的基本思想
1.1基本思想
双重循环遍历数组#xff0c;每经过一轮比较#xff0c;找到最小或最大元素的下标#xff0c;将其换至首位!
经过…选择排序学习目标1.选择排序的基本思想2.二元选择排序3.冒泡排序和选择排序的异同4.复杂度分析1.选择排序的基本思想1.1基本思想双重循环遍历数组每经过一轮比较找到最小或最大元素的下标将其换至首位!经过六轮选择完成排序1.2代码实现publicstaticvoidselectSort(int[]arr){intminIndex;intlenarr.length;for(inti0;ilen-1;i){minIndexi;for(intji1;jlen;j){if(arr[j]arr[minIndex]){minIndexj;}}swap(arr,i,minIndex);}}2.二元选择排序2.1 二元选择排序的思想既然一次选择中要找出最小值何不把最大值也找出来2.2 代码实现publicstaticvoidselectSort(int[]arr){intminIndex,maxIndex;intlenarr.length;for(inti0;ilen-1;i){minIndexi;maxIndexi;//每轮最末尾 i 位 已有序for(intji1;jlen-i;j){if(arr[j]arr[minIndex]){minIndexj;}if(arr[j]arr[maxIndex]){maxIndexj;}}//min max 说明所有元素相等 提前退出if(minIndexmaxIndex)break;swap(arr,i,minIndex);//当前数组的末尾下标 len - 1 - i//特殊情况此时maxIndex i//而 i 刚刚与 minIndex 互换//更新为 maxIndex minIndexif(maxIndexi)maxIndexminIndex;swap(arr,len-1-i,maxIndex);}}3.冒泡排序和选择排序的异同3.1 相同点1.都是两层循环时间复杂度为O(n2)2.都只使用有限个变量空间复杂度为O(1)3.2 不同点1.冒泡排序在比较过程中不断交换2.选择排序增加一个变量保存最小值/最大值的下标遍历完成后才交换减少了交换的次数*3.冒泡排序是稳定的而选择排序是不稳定的3.3 排序算法的稳定性假定在待排序的记录序列中存在多个具有相同的关键字的记录若经过排序这些记录的相对次序保持不变即在原序列中r[i] r[j] 且r[i] 在 r[j] 之前而在排序后的序列中r[i] 仍在 r[j] 之前相对顺序依然不变则称这种排序算法是稳定的否则称为不稳定的3.4 什么情况下要用的排序算法的稳定性将要排序的内容是一个对象的多个属性且其原本的顺序存在意义如果要在二次排序后保持原有排序的意义则需要用到稳定性4.复杂度分析1.时间复杂度O(n2)2.空间复杂度O(1)215. 数组中的第K个最大元素 - 力扣LeetCode2.空间复杂度O(1)215. 数组中的第K个最大元素 - 力扣LeetCode