不多bb直接上代码,是将数组中最小的数往前面排,形成一个升序数组,而且不用额外申请空间!
#include<stdio.h>
#include<stdlib.h>
void selectAscSort(int arr[], int len);
void swap(int* num1, int* num2);
int main() {
int arr[] = { 156,162,173,172,164,163,163 };
int len = sizeof(arr) / sizeof(arr[0]);
selectAscSort(arr, len);
for (int i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
printf("\n");
system("pause");
return 0;
}
void selectAscSort(int arr[], int len) {
for (int i = 0; i < len - 1; i++) {//要比较len-1次
int min = i;
for (int j = i+1; j < len ; j++) {
if (arr[j] < arr[min])
min = j;
}
if(min!=i)
swap(&arr[min],&arr[i]);
}
}
void swap(int* num1, int* num2) {
int tmp = *num1;
*num1 = *num2;
*num2 = tmp;
}
运行结果如图所示: