编写函数,使用选择排序法对数组进行排序(用C语言)

要求:
1、主函数中定义需要排序的数组,并对数组进行初始化(初始化数组的方式自定,可以在定义数组时直接初始化,也可以通过用户输入来确定数组元素),然后输出排序之后的结果。
2、所编写的函数负责使用选择排序法对数组进行排序,特别强调:该函数不受数组元素个数的影响,提示:没有规定函数参数的个数。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main(void)
{
    int a[10],i,j,tmp,b;
    srand(time(NULL));
    for(i=0;i<10;i++)
        a[i]=rand()%100;
    for(i=0;i<10;i++)
        printf("%3d",a[i]);
    printf("\n");
    for(i=0;i<9;i++)
    {
        tmp=i;
        for(j=i+1;j<10;j++)
         {
            if(a[tmp]>a[j])
            tmp=j;
         }
        if(i!=tmp)
        {
            b=a[tmp];
            a[tmp]=a[i];
            a[i]=b;
        }
    }
    for(i=0;i<10;i++)
    printf("%3d",a[i]);
    printf("\n");
    return 0;
}


随机产生数组中的元素, 更合理一些。 百科中有各种版本。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-01-09
#include "stdio.h"
 
void sort(const int, int*);
 
int main(int argc, char** argv) {
 
    int array[] = {5, 34, 54, 2, 54, 51, 543, 2};
    int i = 0;
 
    int arraySize = sizeof(array)/sizeof(array[0]);
 
    sort(arraySize, array);
 
    for (i = 0; i < arraySize; ++ i) {
        printf("array[%d] = %d \n",i, array[i]);
    }
 
    return 0;
}
 
//选择排序
void sort(const int size, int* array){
    int i, j = 0;
    int temp = 0;
 
    for (i = 0; i < size; ++ i) {
        for (j = i + 1; j < size; ++ j) {
            if (array[i] < array[j]) {
                temp = array[i];
                array[i] = array[j];
                array[j] = temp;
            }
        }
    }
}

本回答被提问者采纳
相似回答