C语言选择法排序

C语言选择法排序,第1张

#include<stdio.h>

#define M 5

void main()

{

int b[M],i,j,t,k

for(i=0i<Mi++)

scanf("%d",&b[i])

for(i=0i<M-1i++)

{

for(k=i,j=i+1j<Mj++)

if(b[k]<b[j])

k=j

if(i!=k)

{

t=b[i]

b[i]=b[k]

b[k]=t

}

}

for(i=0i<Mi++)

printf("%d ",b[i])

}

错在大括号位置加错了。

扩展资料:

C语言选择排序详解

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

以升仿乎闹序为例的图解:

代码:

#include<stdio.h>

void SelectionSort(int *num,int n)

{

int i = 0

int min = 0

int j = 0

int tmp = 0

for(i = 0i <n-1i++)

{

min = i//每次讲min置成无序组起始位置元素下标

for(j = ij <nj++)//遍历无序组,找到最小元素。

{

if(num[min]>num[j])

{

min = j

}

}

if(min != i)//如果最小元素不是无序组起始位置元素,则与起始元素交换位置

{

tmp = num[min]

num[min] = num[i]

num[i] = tmp

}

}

}

(此处空一行)

int main()

{

int num[6] = {5,4,3,2,9,1}

int i = 0

SelectionSort(num,6)//这里备罩需要将数列元素个数传入。有心者可用sizeof在函数内求得元素个数。

for(i = 0i <6i++)

{

printf("%d ",num[i])

}

return 0

}

1、打开visual C++ 6.0,准备一个团模空白的c语言文件,引入头文件,在main函数中定义变量和数历歼组:

2、接下来用scanf函数输入的10个数,将输入的数存入到变量a中,接着进行比较排序,如果后一个数比前一个数大则利用中间变量t实现俩值互塌烂缓换,最后输出排序的结果:

3、编译运行程序,输入任意的10个数,回车后即可看到排序后的结果。以上就是c语言中选择排序的用法:

每次从待序记录中选出排序慧樱码最磨皮小的记录,顺序放在已排好的记录序的后面,直到全前游丛部排完。

直接选择排序

void selectSort(SortObject * pvector)

{

int i,j,k

RecordNode temp

for(i=0i<pvector->n-1i++)

{

k=i

for(j=i+1j<pvector->n-1j++)

{

if(pvector->record[j].key>pvector->record[k].key)

k=j

if(k!=i){

temp=pvector->record[k]

pvector->record[k]=pvector->record[i]

pvector->record[i]=temp

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12239579.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存