编写程序,随机产生20个整数,使用选择法进行排序并输出。

如题所述

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#define MAXlen 20

void select_sort(int *x, int n) {     //选择排序

int i, j, min;

int t;

for (i = 0; i < n - 1; i++) {     // 要选择的次数:0~n-2共n-1次 

min = i;                      // 假设当前下标为i的数最小,比较后再调整 

for (j = i + 1; j < n; j++) { //循环找出最小的数的下标是哪个

if (*(x + j) < *(x + min)) {   

min = j;              // 如果后面的数比前面的小,则记下它的下标

}

}  

if (min != i) {               // 如果min在循环中改变了,就需要交换数据

t = *(x + i);

*(x + i) = *(x + min);

*(x + min) = t;

}

}

}

int main() {

int i;

int iArr[MAXlen];

srand((unsigned int)time(NULL));

printf("\n排序前:\n");

for(i = 0 ; i < MAXlen ; i++) {

iArr[i] = (unsigned int)rand() % 1000;

if(i % 10 == 0) printf("%\n");

printf("%5d",iArr[i]);

}

printf("\n");

select_sort(iArr,MAXlen);

printf("\n排序后:\n");

for(i = 0 ; i < MAXlen ; i++) {

if(i % 10 == 0) printf("%\n");

printf("%5d",iArr[i]);

}

printf("\n\n");

return 0;

}

温馨提示:答案为网友推荐,仅供参考
相似回答