你那个好像不是选择排序吧..............选择法的好处是先找出每趟的最大或者最小下标,经过判断后再互换位置,尽可能少的互换位置,提高了性能,而冒泡排序交换位置要远远多于选择法。
其实也没什么卵用,只排序几个数的话,性能不是问题,方便才是唯一。
#import <Foundation/Foundation.h> int main(int argc,const char * argv[]) { @autoreleasepool { int a[10]; int n = 10; for (int i = 0; i < n; i++) { a = arc4random_uniform(10);//在0~9中选择随机数 } for (int i = 0; i < n; i++) { printf("%4d",a); } printf("\n"); for (int i = 0; i < n - 1; i++) { int k = i; for (int j = i + 1; j < n; j++) { if (a[k]>a[j])//把最小的数的下标给k { k = j; } } if (k != i) {//确保每趟的i下标代表元素值是其后面数中最小的 int temp = a; a = a[k]; a[k] = temp; } } for (int i = 0; i < n; i++) { printf("%4d",a); }
}
return 0; } 9 5 0 0 8 5 6 6 7 6
0 0 5 5 6 6 6 7 8 9
|