选择排序:依次取出现有集合中最大(或最小)的元素,按取出顺序存储
选择排序的时间复杂度为多少?
答:O(n2)
大O表示法会省略常数,所以不是O(1/2n2)
# include <stdio.h>
void swap(int *a,int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
void selection_sort(int arr[], int len)
{
int i,j;
for (i = 0;i<len-1;i++){
int max = i;
for (j = i + 1; j < len; j++)
if (arr[j] > arr[max] max = j;
swap(&arr[max]. &arr[i]);
int main(){
int i;
int a[6] = {61,94,88,159,111,141};
puts("排序前:");
for(i=0;i<6;i++)printf('%d',a[i]);
selection_sort(a,6);
puts("排序后:");
for(i=0;i<6;i++) printf("%d",a[i]);
return 0;
}