/*
* @Author: jinbo.ma
* @Mail: jinbo.ma@bayeasy.cn
* @Date: 2020-09-23 10:30:56
* @LastEditTime: 2021-07-03 14:08:37
* @FilePath: /Study/c/sort/selectSort.c
* @Description: file content
*/
#include <stdio.h>
void print_array(int *a, int size) {
for (int i = 0; i < size; i++) {
printf("%d ", a[i]);
}
printf("\n");
}
void selectSort(int *a, int size) {
int t, max;
while ( --size ) { //从右到左,从大到小
max = size;
for (int i = 0; i < size; i++ ) {
if (a[max] < a[i]) {
max = i;
}
}
t = a[max];
a[max] = a[size];
a[size] = t;
print_array(a, size+1);
}
}
void selectSort2(int *a, int size) {
for (int i = 0; i < size-1; i++) { //从左到右,从小到大
int min = i;
for (int j = i+1; j < size; j++) {
if ( a[min] > a[j] ) {
min = j;
}
}
if ( min != i ) {
int tmp = a[i];
a[i] = a[min];
a[min] = tmp;
}
print_array(a, size);
}
}
int main() {
int a[8] = {7, 6, 5, 8, 3, 2, 4, 1};
// selectSort(a, 8);
// print_array(a, 8);
selectSort2(a, 8);
return 0;
}
/** selectSort 执行结果**
7 6 5 1 3 2 4 8
4 6 5 1 3 2 7
4 2 5 1 3 6
4 2 3 1 5
1 2 3 4
1 2 3
1 2
1 2 3 4 5 6 7 8
*/
/** selectSort2 执行结果**
1 6 5 8 3 2 4 7
1 2 5 8 3 6 4 7
1 2 3 8 5 6 4 7
1 2 3 4 5 6 8 7
1 2 3 4 5 6 8 7
1 2 3 4 5 6 8 7
1 2 3 4 5 6 7 8
*/
算法复杂度 O (n2)