选择排序时间复杂度也为O(n^2)
选择排序即每次length-i的长度内选择一个最小的元素,与第一个进行替换,这样大循环length次后,就可以得到排好序的数组了。
void selectSort(int *arr,int length){
int i,j,k,min;
for(i=0;i<length;i++){
min = i;
for(j=i+1;j<length;j++){
if(arr[j] <arr[min])
min = j;
}
if(min != i){
k = arr[i];
arr[i] = arr[min];
arr[min] = k;
}
}
}
#include <stdio.h>
#include <stdlib.h>
int arrtest[10] = {3,4,7,8,0,9,1,2,6,5};
//int arrtest[10] = {0,1,2,3,4,5,6,7,8,9};
//int arrtest[10] = {9,8,7,6,5,4,3,2,1,0};
void copy(int *arr,int length);
void print(int *arr,int length);
void selectSort(int *arr,int length);
int main(){
int Arr[10];
copy(Arr,10);
print(Arr,10);
selectSort(Arr,10);
print(Arr,10);
getchar();
return 0;
}
void selectSort(int *arr,int length){
int i,j,k,min;
for(i=0;i<length;i++){
min = i;
for(j=i+1;j<length;j++){
if(arr[j] <arr[min])
min = j;
}
if(min != i){
k = arr[i];
arr[i] = arr[min];
arr[min] = k;
}
}
}
void copy(int *arr,int length){
int i;
for(i=0;i<length;i++){
arr[i] = arrtest[i];
}
}
void print(int *arr,int length){
int i;
for(i=0;i<length;i++){
printf("%d ",arr[i]);
}
printf("\n");
}