日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

选择排序算法流程图_常用排序算法之选择排序

發布時間:2024/7/23 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 选择排序算法流程图_常用排序算法之选择排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前兩天給大家分享了冒泡排序和插入排序(沒關注的同學,可以關注后查看歷史消息),今天繼續給大家分享另一種常用的排序算法--選擇排序

選擇排序

選擇排序和插入排序很相似,也區分已排序區間和未排序區間,選擇排序是每次從未排序區間找到最小的元素放到已排序區間的末尾。

如下圖:

代碼示例

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)的排序算法。

    最后,關注下唄~

    總結

    以上是生活随笔為你收集整理的选择排序算法流程图_常用排序算法之选择排序的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。