前言
选择排序 从序列中找到一个最小元素,把最小元素放到整个序列的首部,重复n轮,直到整个序列有序

More info: SelectSort
选择排序(SelectSort)
选择排序 从序列中找到一个最小元素,把最小元素放到整个序列的首部,重复n轮,直到整个序列有序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| bool SelectSort(int buf[],int bufsize) { int temp = 0;
for (int n = 0; n < bufsize-1; ++n) { int min = n;
for (int m = n+1; m < bufsize; ++m) { if(buf[min] > buf[m]) { min = m; } } temp = buf[n]; buf[n] = buf[min]; buf[min] = temp; } return true; }
|
遍历元素(Prin)
1 2 3 4 5 6 7 8 9 10
| bool Prin(int buf[],int size) { printf("Element:"); for(int i= 0;i< size;i++) { printf("%d ",buf[i]); } printf("\n"); return true; }
|
main主程序
1 2 3 4 5 6 7 8 9 10 11 12 13
| int main() { int buf[10]={2,4,1,6,8,2,6,1,7,4};
Prin(buf,sizeof(buf)/ sizeof(buf[1]));
SelectSort(buf, sizeof(buf)/ sizeof(buf[1]));
Prin(buf,sizeof(buf)/ sizeof(buf[1]));
return 0; }
|
结果验证
1 2 3 4
| Element:2 4 1 6 8 2 6 1 7 4 Element:1 1 2 2 4 4 6 6 7 8
进程已结束,退出代码0
|
汇总
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| #include <stdio.h> #include <stdbool.h>
bool SelectSort(int buf[],int bufsize) { int temp = 0;
for (int n = 0; n < bufsize-1; ++n) { int min = n;
for (int m = n+1; m < bufsize; ++m) { if(buf[min] > buf[m]) { min = m; } } temp = buf[n]; buf[n] = buf[min]; buf[min] = temp; } return true; }
bool Prin(int buf[],int size) { printf("Element:"); for(int i= 0;i< size;i++) { printf("%d ",buf[i]); } printf("\n"); return true; }
int main() { int buf[10]={2,4,1,6,8,2,6,1,7,4};
Prin(buf,sizeof(buf)/ sizeof(buf[1]));
SelectSort(buf, sizeof(buf)/ sizeof(buf[1]));
Prin(buf,sizeof(buf)/ sizeof(buf[1]));
return 0; }
|