c语言 选择法排序

发布网友 发布时间:2022-04-22 05:46

我来回答

8个回答

热心网友 时间:2022-05-22 02:12

void sa(int array[],int n)
{
int i,j,k,temp;
for(i=0;i<10;i++)
{
k=i; //保存i的值,用k来进行循环排序
for(j=i+1;j<n;j++) //将第i个元素后面的元素与第i个元素进行比较
if(array[j]<array[k]) //如果第k=i个元素后面的元素小于i号元素,交换两个元素的标号, 这样就将最小元素的标号放到最前面
k=j; //交换标号
temp=array[k]; //循环结束后,交换两个标号下的元素的值
array[k]=array[i];
array[i]=temp;
}
}
这个程序实现的是由小到大的排序。第二个循环里面,就是i号元素后面最小的元素对应的标号放到k中,在交换当前元素与k号元素中的值,实现由大到小排序

热心网友 时间:2022-05-22 03:30

选择法的算法:
假设需要对10个数进行排序,那么首先找出10个数里面的最小数,并和这个10个数的第一个(下标0)交换位置,剩下9个数(这9个数都比刚才选出来那个数大),再选出这9个数中的最小的数,和第二个位置的数(下标1)交换,于是还剩8个数(这8个数都比刚才选出来的大)..

依次类推,当还剩两个数时,选出两个数的最小者放在第9个位置(下标8),于是就只剩下一个数了。这个数已经在最后一位(下标9),不用再选择了。所以10个数排序,一共需要选择9次(n个数排序就需要选择n-1次)。

热心网友 时间:2022-05-22 05:04

void sa(int array[],int n)

{

int i,j,k,temp;

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

{

k=i;                 //保存i的值,用k来进行循环排序

for(j=i+1;j<n;j++)         //将第i个元素后面的元素与第i个元素进行比较

if(array[j]<array[k])   //如果第k=i个元素后面的元素小于i号元素,交换两个元素的标号,                            这样就将最小元素的标号放到最前面

k=j;                //交换标号

temp=array[k];          //循环结束后,交换两个标号下的元素的值

array[k]=array[i];

array[i]=temp;

}

}

热心网友 时间:2022-05-22 06:56

#include<stdio.h>
#define N 6
void main()
{ int a[N]={2,4,6,5,9,8},i,j,t;
for(i=0;i<N-1;i++)
for(j=i+1;j<N;j++)
if(a[i]<a[j])
{t=a[i];
a[i]=a[j];
a[j]=t;
}
for(i=0;i<=N-1;i++)
printf("%d",a[i]);

}

热心网友 时间:2022-05-22 09:04

以整形数组元素为例,有数组A[10](以C语言为例描述),即A[0],A[1],…,A[8],A[9](假设其元素均互不相同)。要求对其元素排序使之递增有序。
首先以一个元素为基准,从一个方向开始扫描,比如从左至右扫描,以A[0]为基准。
接下来从A[1],…,A[9]中找出最小的元素,将其与A[0]交换。
然后将基准位置右移一位,重复上面的动作,比如,以A[1]为基准,找出A[1]~A[9]中最小的,将其与A[1]交换。
一直进行到基准位置移到数组最后一个元素时排序结束(此时基准左边所有元素均递增有序,而基准为最后一个元素,故完成排序)。
以下为一个用C描述的函数实现上述排序:
void sort(int array[],int n)
{ // n 为数组元素个数
int i,j,k,temp; // i 为基准位置,j 为当前被扫描元素位置,k 用于暂存出现的较小的元素的位置
for(i=0;i<n-1;i++)
{k=i;//初始化为基准位置
for(j=i+1;j<n;j++)
{
if (array[j]<array[k]) k=j ; // k 始终指示出现的较小的元素的位置
} //for
if(k!=i)
{ temp=array[i];
array[i]=array[k];
array[k]=temp; // 将此趟扫描得到的最小元素与基准互换位置
}
}
}

热心网友 时间:2022-05-22 11:28

选择法,是最简单的排序方法。

你的程序,太啰嗦了,所以难以理解。

如下即可:

去掉无聊的语句,这就好看多了,

热心网友 时间:2022-05-22 14:26

选择排序的工作原理是每一次从无序组的数据元素中选出最小(或最大)的一个元素,存放在无序组的起始位置,无序组元素减少,有序组元素增加,直到全部待排序的数据元素排完。

给你一个我写的例子(C语言程序设计案例教程(廖湖声) P122 第四章 上机练习 第一题
):网页链接,你可以放到codeblocks中用执行,并用菜单中的Debug->Debugging windows->watches来看变量的变化,加油!

热心网友 时间:2022-05-22 17:41

就是比较大小后交换位置啊

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com