1. 選擇排序
由小到大排序的過程
第一趟相當於找到最小值並放在首位
第二趟相當於找到次小值,並放在第2的位置上
以此類推
b. 與氣泡排序的區別
在找最小數的同時氣泡排序會交換資料,而選技排序不會交換只是查詢最小數,找到了才交換
下面是冒泡的理解:
第1個數與剩下的n-1個數比較,若有比第1個數小的就交換,讓第1個數始終存
本趟最小的數
第2個數
與剩下的n-2個數比較,若有比第2個數小的就交換,讓第2個數始終存本趟最小的數
1.2 **
#include
#include
#define dbmsg(fmt, args ...
) printf(
"%s:%s[%d]: "fmt"\n"
, __file__,__function__, __line__,
##args)
#define swap(x,y)
(x=(x)
+(y)
,y=(x)
-(y)
,x=(x)
-(y)
)int dum_array(
int* arr,
intlen
)printf(
"\n");
return 0;
}int select_min_index(
int*arr,
int start,
intend
)int select_sort(
int* arr,
intlen
)return 0;
}int main (
int argc, char *argv)
;int arr=
;int
len= sizeof(arr)
/sizeof(
int)
;dbmsg(
"len=%d"
,len);
dbmsg(
"before sort:");
dum_array(arr,
len)
;select_sort(arr,
len)
;dbmsg(
"after sort:");
dum_array(arr,
len)
;return exit_success;}
1.3 執行結果
select.c:main[51]: before sort:
49 38 65 97 76 13 27 49 55 4
select.c:select_min_index[22]: s=0,e=10
select.c:select_sort[38]: j=9
4 38 65 97 76 13 27 49 55 49
select.c:select_min_index[22]: s=1,e=10
select.c:select_sort[38]: j=5
4 13 65 97 76 38 27 49 55 49
select.c:select_min_index[22]: s=2,e=10
select.c:select_sort[38]: j=6
4 13 27 97 76 38 65 49 55 49
select.c:select_min_index[22]: s=3,e=10
select.c:select_sort[38]: j=5
4 13 27 38 76 97 65 49 55 49
select.c:select_min_index[22]: s=4,e=10
select.c:select_sort[38]: j=7
4 13 27 38 49 97 65 76 55 49
select.c:select_min_index[22]: s=5,e=10
select.c:select_sort[38]: j=9
4 13 27 38 49 49 65 76 55 97
select.c:select_min_index[22]: s=6,e=10
select.c:select_sort[38]: j=8
4 13 27 38 49 49 55 76 65 97
select.c:select_min_index[22]: s=7,e=10
select.c:select_sort[38]: j=8
4 13 27 38 49 49 55 65 76 97
select.c:select_min_index[22]: s=8,e=10
select.c:select_sort[38]: j=8
4 13 27 38 49 49 55 65 76 97
select.c:select_min_index[22]: s=9,e=10
select.c:select_sort[38]: j=9
4 13 27 38 49 49 55 65 76 97
select.c:main[54]: after sort:
4 13 27 38 49 49 55 65 76 97
1.4 效能
o(n2)
常見排序演算法總結 5 選擇排序
5 選擇排序 將陣列中待排序的元素中最小 大 的元素取出,放在陣列中已排序的元素序列的末尾,直至陣列中沒有待排序的元素 舉例 分析 對於n個元素的陣列,進行了 n 1 次選擇,每次選擇進行了 n 1 1次比較,平均每次選擇了n 2次,一共比較了n n 1 2次 邏輯 首先做乙個i 0 i n的迴圈a...
演算法 day5 選擇排序
選擇排序是一種簡單直觀的排序演算法,它的工作原理是每一次從待排序的資料元素中選出最小 最大 的乙個元素,存放在序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾。以此類推,直到全部待排序的資料元素排完。選擇排序是不穩定的排序方法。選擇排序,內層迴圈,每一圈選出...
5 選擇排序
1 思路 對待排序的序列,選出關鍵字最小的資料,將它和第乙個位置的資料交換,接著,選出關鍵字次小的資料,將它與第二個位置上的資料交換。以此類推,直到完成整個過程。所以如果有n個資料,那個需要遍歷n 1遍。2 複雜度分析 2.1 時間複雜度 總的比較次數為 n 1 n 2 1 1 2 n n 1 o ...