用选择法将数组排成升序的函数 array1;

用选择法将数组排成升序的函数 array1;

#include <stdio.h>
int main()
{
    int i = 0;         //定义一个i并且赋初值为0,i作为数组的下标
    int j = 0;      //定义j并且赋初值为0,j作为找到最大值时所对应的下标
    int k;            //定义一个k,用来保存此次循环中最大值的下标
    int temp;         //定义一个中间变量temp,供以后交换值的时候使用
    int array1[]={4,5,6,72,1,7,9,3,};    //定义了一个9个数的数组,并且初始化
    int len = sizeof(array1)/sizeof(array1[0]);  //len是数组的大小
    for(i = 0;i<len;i++)        //判断i是否小于len,执行下面的语句
    {
        k = i;           //假设此次循环中的最大值就是当前的值   
        for(j = i+1;j<len;j++)
        {
            if(array1[j]>array1[k])    //将假设的当前最大值与后面的值比较
            {
                k = j;     //若后面的值更大,则交换下标
            }
        },当前最大值
        if(k != i)       //比较之后如果此次循环中最大值并非当前值
        { 
            temp = a[i];   //将此次循环中的最大值与a[k]交换
            a[i] = a[k];
            a[k] = temp;
        }
    }
    for(i=0;i<len;i++)       //利用for循环将结果依次输出
    {
        printf("%d ",array1[i]);
    }
    return 0;
}

#include <stdio.h>
void array1(int *a,int N){
    for (int i = 0; i < N - 1; i++){
        int min = i;
        for (int j = i + 1; j < N; j++) 
            if (a[min] > a[j]) 
                min = j;
        int t = a[min]; 
        a[min]=a[i];
        a[i] =t;
    }
}
int main(){
    int N=10;
    int a[N],i;
    printf("Input %d numbers:\n",N);
    for(i=0;i<N;i++) 
        scanf("%d",&a[i]);
    array1(a,N); 
    printf("The sorted numbers:\n");
    for(i=0;i<N;i++)
        printf("%4d ",a[i]);
    return 0; 
}

img

# include <stdio.h>
int main(void)
{
    int i, j;  //循环变量
    int MinIndex;  //保存最小的值的下标
    int buf;  //互换数据时的临时变量
    int a[] = {5, 5, 3, 7, 4, 2, 5, 4, 9, 1, 8, 6};
    int n = sizeof(a) / sizeof(a[0]);  //存放数组a中元素的个数
    for (i=0; i<n-1; ++i)  //n个数比较n-1轮
    {
        MinIndex = i;
        for (j=i+1; j<n; ++j)  //每轮比较n-1-i次, 找本轮最小数的下标
        {
            if (a[MinIndex] > a[j])
            {
                MinIndex = j;  //保存小的数的下标
            }
        }
        if (MinIndex != i)  /*找到最小数之后如果它的下标不是i则说明它不在最左边, 则互换位置*/
        {
            buf = a[MinIndex];
            a[MinIndex] = a[i];
            a[i] = buf;
        }
    }
    printf("最终排序结果为:\n");
    for (i=0; i<12; ++i)
    {
        printf("%d ", a[i]);
    }
    printf("\n");
    return 0;
}

参考以下说明

如有帮助,采纳支持一下,谢谢。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632