C语言:用选择排序法对一个数组里的数进行排序,从小到大,要求选出小的进行排序

 我来答
大野瘦子
高粉答主

2019-10-25 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:1227
采纳率:100%
帮助的人:33.2万
展开全部

这样:

int *a = (int *)malloc(sizeof(int) * n); //动态分配数组空间 ,有几个元素,n就是几。

for(i=0; i<n; i++)

{

a[i]=录入数值;

}

Sort(a, n);

for(j=0; j<n; j++)

{

printf("%d",a[ij);//输出的内容就是排序好了的

}

//下面方法是用来排序的

void Sort(int *a, int n)

{

int i, j, temp;

for(i=0; i<n; i++)

{

for(j=i; j<n; j++)

{

if(a[i] > a[j])

{

temp = a[i];

a[i] = a[j];

a[j] = temp;

}

}

}

扩展资料:

注意事项

1、选择排序法是将序列分为两段,有序前列和无序后列,每次查找无序后列中最大元素,将其插入到有序前列的最末尾处,直至无序后列最后一个元素,最终排序后的序列为降序序列。

2、适用于包括数组和向量在内的序列。

3、选择排序与冒泡排序的区别是选择排序每次遍历时会记住最大元素的位置,只进行一次交换,而冒泡排序每次遍历时会交换两个顺序不合法的元素。

算法程序:

#include "stdafx.h"

#include<iostream>

using namespace std; 

void SelectSort(int A[],int n)

{

for(int i = 0;i < n;i++ )

{

int max =i;

for(int j = i+1;j < n;j++) //查找最大元素所在位置

{

if (A[j] > A[max])

max =j;

}

int temp = A[max];  //交换无序后列中首元素与最大元素的位置

A[max] = A[i];

A[i] = temp;

}

}

爱教育爱学习
高粉答主

2019-10-27 · 学而不思则罔,思而不学则殆
爱教育爱学习
采纳数:384 获赞数:112729

向TA提问 私信TA
展开全部

#include<stdio.h>

intmain()

{

inti=0;

inta[10]={0,5,2,3,6,9,8,7,4,1};

intj=0;

inttmp=0;

intm=sizeof(a)/sizeof(a[0]);//s数组大小

for(i=0;i<m-1;i++)//比较m-1次

{

for(j=0;j<m-i-1;j++)//最后一次比较a[m-i-1]与a[m-i-2]

{

if(a[j]>a[j+1])//如果a[j]比a[j+1]大则交换内容

{

tmp=a[j+1];

a[j+1]=a[j];

a[j]=tmp;

}

}

}

for(i=0;i<m;i++)

{

printf("%d",a[i]);//打印

}

printf("\n");

return0;

}

扩展资料

C语言排序法

把一个数组进行排序可以使用选择排序法。选择排序法的原理在是每一趟循环寻找数组中最小的数的下标,然后按照递增的顺序放入数组中。

循环找出最小数的下标,该下标用min保存,直到比较完整个数组,即可找到最小的数,然后将该数放入数组的第一位,这样就排好了一个元素。

需要再嵌套一层外层循环即可排好所有元素。第二次循环就不用再比较第一个元素了,因为第一个元素已经排好,依次类推,每一次循环就会排好一个,进行n-1次循环即可排好所有元素。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wenjie1024
推荐于2017-12-16 · TA获得超过2381个赞
知道大有可为答主
回答量:1737
采纳率:72%
帮助的人:850万
展开全部
#include<stdio.h>
void sorted(int a[],int n){ //选择法排序
    int i,j,k,t;
    for(i=0;i<n-1;i++){
        k=i;
        for(j=i+1;j<n;j++){
            if(a[k]>a[j])k=j;} 
        if(k!=i){t=a[k];a[k]=a[i];a[i]=t;}}
}
int main(){
    int n,i,a[255];
    printf("请输入数据总量n(1-254):");scanf("%d",&n);    
    printf("请输入%d个数:",n);
    for(i=0;i<n;i++)scanf("%d",&a[i]);
    printf("排序前的数组:");
    for(i=0;i<n;i++)printf("%d ",a[i]);printf("\n");      
    sorted(a,n);printf("排序后的数组:");
    for(i=0;i<n;i++)printf("%d ",a[i]);printf("\n");    
    return 0;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式