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

2025-04-15 01:13:47
推荐回答(2个)
回答1:

#include 
#include 
#include 
 
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;
}


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

回答2:

#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;
            }
        }
    }
}