排序演算法(二) 選擇排序

2021-08-18 11:47:36 字數 823 閱讀 9685

選擇排序是一種簡單的直觀的排序演算法,基本原理如下:對於給定的一組記錄,經過一輪比較後得到最小的記錄,然後將該記錄的位置與第乙個記錄的位置交換;接著對不包括第乙個記錄以外的其他記錄進行第二次比較,得到最小記錄並與第二個位置記錄交換,重複該過程,直到進行比較的記錄只剩下乙個為止『

從簡單排序的過程來看,他最大的特點是交換移動資料相當少,這樣節約了相應的時間。分析它的時間複雜度發現,無論是最好還是最差情況,其比較次數都是一樣多的。第i趟排序需要進行n-i次關鍵字比較。此時需要比較次數是

n-1+n-2+...+1=n(n-1)/2
n(n-1)/2,對於交換次數而言,當最好的時候,交換0次,最差的時候,也就是初始o(n2)

降時,交換次數為 n-1 次,基於最終的時間排序與交換次數總和,因此,總的時間複雜度依然為o(n2)。

儘管與氣泡排序同為o(n2),但簡單選擇排序的效能要優於氣泡排序。

以陣列為例,

排序演算法 二 選擇排序

之前給大家分享了排序演算法裡面比較簡單的氣泡排序,今天來分享一下選擇排序的演算法 選擇排序的思想 1.以公升序為例 在一組數中選出最大的數放到第乙個位置,或者選出最小的數放到最後乙個位置,2.在選取剩餘元素的最大數放到第二個位置,或選出剩餘元素中的最小值放到倒數第二哥位置,3.依次往下選取,直到遍歷...

排序演算法 二 選擇排序

演算法實現 selectsort.c include void selectsort int arr,int len if min i for k 0 k演算法思想 保證將要成為有序範圍內的那個位置的值是無序裡的最小值。ex 從陣列選出最小的放在第乙個位置上,在從剩餘陣列選出最小放在第二個位置上,以...

排序演算法二 選擇排序

首先來看一下簡單選擇排序 思想 在未排序的序列中選出最小的元素和當前序列的第乙個元素互換,然後在剩下的元素中選出乙個與剩下元素的第乙個位置互換,依次交換,最後就會形成乙個從小到大的已排序序列。void selectsort int a,int n 迴圈完一遍 已找到最小元素 交換 a i a i a...