惠州网站建设点,找seo外包公司需要注意什么,南城网站建设,未来最吃香的十大行业2022前两天给大家分享了冒泡排序和插入排序(没关注的同学#xff0c;可以关注后查看历史消息)#xff0c;今天继续给大家分享另一种常用的排序算法--选择排序。选择排序选择排序和插入排序很相似#xff0c;也区分已排序区间和未排序区间#xff0c;选择排序是每次从未排序区间… 前两天给大家分享了冒泡排序和插入排序(没关注的同学可以关注后查看历史消息)今天继续给大家分享另一种常用的排序算法--选择排序。选择排序 选择排序和插入排序很相似也区分已排序区间和未排序区间选择排序是每次从未排序区间找到最小的元素放到已排序区间的末尾。如下图代码示例go示例func SelectionSort(nums []int, n int) { if n 1 { return } for i : 0; i n; i { min : i for j : i 1; j n; j { if nums[j] nums[min] { min j } } if min ! i { nums[i], nums[min] nums[min], nums[i] } }}PHP示例function SelectionSort($nums) { if(count($nums) 1 ){ return $nums; } for ($i 0; $i count($nums);$i) { $min $i; for ($j $i 1; $j count($nums); $j) { if ($nums[$min] $nums[$j]) { $min $j; } } if ($min ! $i) { $temp $nums[$i]; $nums[$i] $nums[$min]; $nums[$min] $temp; } } return $nums;}JS示例const selectionSort (arr) { if (arr.length 1) return for (let i 0; i arr.length - 1; i) { let minIndex i for (let j i 1; j arr.length; j) { if (arr[j] arr[minIndex]) { minIndex j } } const temp arr[i] arr[i] arr[minIndex] arr[minIndex] temp } console.log(arr)}性能分析最后我们看下插入排序的性能和稳定性时间复杂度嵌套了两个循环O(n2)空间复杂度不需要额外的存储空间是原地排序算法算法稳定性每次都要找未排序区间的最小值并和前面的元素交换位置涉及到位置交换是不稳定的排序算法 介绍完了三种排序算法时间复杂度都是O(n2)也都是原地排序选择排序是不稳定的排序算法。插入排序和冒泡排序相比插入排序需要一条语句冒泡排序需要三个赋值语句所以插入排序要优于冒泡排序。 但是在数据量大的时候这三个排序算法都不是很理想接下来我会再分享两种时间复杂度为O(nlogn)的排序算法。 最后关注下呗