C语言中选择排序法具体是怎样的?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中选择排序法具体是怎样的?相关的知识,希望对你有一定的参考价值。
参考技术A 每次从未排序的数字中选择最小的,与未排序的第一个交换,直到剩一个为止例子:
(3
5
4
1
2
)
选择最小为1,与3交换
1
(5
4
3
2)
从剩余的选择最小为2
,与5交换
1
2
(4
3
5)
选择最小为3
与4交换
1
2
3
(4
5)选择最小为4
,它就是未排序第一个,不交换
1
2
3
4
(5)
只剩一个了,结束 参考技术B 第一次循环找到所有数中最小的一个,选择这个最小的数,和第一个进行位置交换,第二次循环时从第二个数开始查找,找到其中最小的与第二个进行位置交换,依此类推。
c语言:指针 用选择法对10个整数由大到小顺序排序
#include<stdio.h>
void main()
void inv(int * x,int n);
int i,* a,b[10];
a=b;
printf("please input array a\n");
for(i=0;i<10;i++)
scanf("%d",a++);
printf("\n");
a=b;
inv(a,10);
for(i=0;i<10;i++)
printf("%d ",* a++);
printf("\n");
void inv(int * x,int n)
int * i,* j,* k,temp;
for(i=x;i<x+n-1;i++)
k=i;
for(j=x+1;j<(x+n);j++)
if(* j>* k) k=j;//问题处
if(k!=i)
temp=* k;* k=* j;* j=temp;
此程序的倒数第5行中"k=j"指针变量对指针变量赋值对吗?要怎么改呀?
void inv(int * x,int n)
int * i,* j,* k,temp;
for(i=x;i<x+n-1;i++)
k=i;
for(j=i+1;j<(x+n);j++) //j=i+1不是x+1
if(* j>* k) k=j;//问题处
if(k!=i)
temp=* k;* k=* i;* i=temp; //这里交换k,i指向的值,不是j指向的值
本回答被提问者采纳
以上是关于C语言中选择排序法具体是怎样的?的主要内容,如果未能解决你的问题,请参考以下文章