C语言:用选择法对10个整数排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言:用选择法对10个整数排序相关的知识,希望对你有一定的参考价值。

请问有没有比这个在好点的方法?
/* 用选择法对10个整数排序 */
#include <stdio.h>
void main()

int num[20];
int a,b,c,t;
for (c=0;c<10;c++)
scanf("%d",&num[c]);
for (a=0;a<10;a++)
for (b=9;b>1;b--)
if (num[a]>num[b]) t=num[a];num[a]=num[b];num[b]=t;
for (a=1;a<10;a++)
for (b=9;b>1;b--)
if (num[a]>num[b]) t=num[a];num[a]=num[b];num[b]=t;
for (a=2;a<10;a++)
for (b=9;b>2;b--)
if (num[a]>num[b]) t=num[a];num[a]=num[b];num[b]=t;
for (a=3;a<10;a++)
for (b=9;b>3;b--)
if (num[a]>num[b]) t=num[a];num[a]=num[b];num[b]=t;
for (a=4;a<10;a++)
for (b=9;b>4;b--)
if (num[a]>num[b]) t=num[a];num[a]=num[b];num[b]=t;
for (a=5;a<10;a++)
for (b=9;b>5;b--)
if (num[a]>num[b]) t=num[a];num[a]=num[b];num[b]=t;
for (a=6;a<10;a++)
for (b=9;b>6;b--)
if (num[a]>num[b]) t=num[a];num[a]=num[b];num[b]=t;
for (a=7;a<10;a++)
for (b=9;b>7;b--)
if (num[a]>num[b]) t=num[a];num[a]=num[b];num[b]=t;
for (a=8;a<10;a++)
for (b=9;b>8;b--)
if (num[a]>num[b]) t=num[a];num[a]=num[b];num[b]=t;
printf("%d%d%d%d%d%d%d%d%d%d",num[0],num[1],num[2],num[3],num[4],num[5],num[6],num[7],num[8],num[9]);
getch();

代码文本:

#include "stdio.h"

int main(int argc,char *argv[])  

int a[10]=7,9,1,5,3,4,2,8,0,6,b[10]=2,8,0,6,5,3,4,7,9,1,i,j,k;

for(i=0;i<10;i++)//选择法对a由小到大排序

for(k=i,j=k+1;j<10;j++)

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

k=j;

if(k!=i)

j=a[k],a[k]=a[i],a[i]=j;

printf("%2d",a[i]);//输出a

putchar('\\n');

for(i=0;i<10;i++)//冒泡法对b由大到小排序

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

if(b[j]<b[j+1])

k=b[j],b[j]=b[j+1],b[j+1]=k;

for(i=0;i<10;printf("%2d",b[i++]));

putchar('\\n');

return 0;

可以比较它们的异同……

参考技术A #include <stdio.h>
//简单选择排序
void SelectSort(int r[ ], int n)

int i;
int j;
int index;
int temp;
for (i=0; i<n-1; i++) //对n个记录进行n-1趟简单选择排序

index=i;
for (j=i+1; j<n; j++) //在无序区中选取最小记录
if (r[j]<r[index])
index=j;
if (index!=i)

temp=r[i];
r[i]=r[index];
r[index]=temp;



void main()

int num[20];
int a,b,c,t;
for (c=0;c<10;c++)
scanf("%d",&num[c]);
SelectSort(num,10);//调用用SelectSort(num,10)即可
for(c=0;c<10;c++)
printf("%d ",num[c]);
getch();
本回答被提问者采纳
参考技术B //---------------------------------------------------------------------------

#include <stdio.h>

int main(void)

int a[10],i,j,k,t;
for (i=0;i<10;i++) scanf("%d",&a[i]);
for (i=0;i<9;++i)
k=i;
for (j=i+1;j<10;++j)
if(a[k]>a[j]) k=j;
if (k!=i)
t=a[i];
a[i]=a[k];
a[k]=t;


for (i=0;i<10;++i) printf("%d\t",a[i]);
return 0;

//---------------------------------------------------------------------------
参考技术C #include<stdio.h>
int main(void)
int p,num[10],i,j,q=0,t;
for (i=0;i<=9;i++)
scanf ("%d",&num[i]);
for (i=0;i<=9;i++)
for (j=i;j<=9;j++)
if (num[i]>q)
t=j;
q=num[i];

p=num[i];
num[i]=q;
num[t]=p;
q=0;

for (i=0;i<=9;i++)
printf("%d",num[i]);
while (1);

c语言编程题 利用指针编写函数用选择法对整数数组排序(降序)。 求大神帮忙啊!!!谢谢

#include<stdio.h>

void Sort(int *a,int n) 
int *p,*q,*v,t;
for(p = a;p < a + n - 1;++p) 
v = p;
for(q = p + 1; q < a + n; ++q)
if(*v > *q) v = q;
if(*p != *v) 
t = *p;
*p = *v;
*v = t;





void Show(int *a,int n) 
int i;
for(i = 0; i < n; ++i)
printf("%d ",*(a + i));
printf("\\n");


int main() 
int a[] = 23,12,54,89,66,59,57,48,91,20,31;
int n = sizeof(a)/sizeof(a[0]);
printf("排序前:\\n");
Show(a,n);
printf("排序后:\\n");
Sort(a,n);
Show(a,n);
return 0;

参考技术A #include <iostream>
using namespace std;
int sort(int *a, int num)

int temp;
for(int i = 0; i < (num-1); i++)

if(a[i]>a[i+1])

temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;


return 0;

int main()

int num;
printf("请输入数组中整数个数:\n");
scanf("%d",&num);
int a[num];
sort(a,num);
return 0;

本回答被提问者采纳

以上是关于C语言:用选择法对10个整数排序的主要内容,如果未能解决你的问题,请参考以下文章

C语言1.用选择法对10个整数排序。10个整数用scanf函数输入。

C语言 利用选择排序法对10个整数排序

C语言问题:从键盘输入十个整数,用选择排序法对输入的数据从小到大的顺序进行排序,将排序后的结果输出

C语言 利用选择排序法对数组中10个整数由小到大排序

用C语言用选择法对10个整数按升序排列(指针变量表示数组)

c语言编程题 利用指针编写函数用选择法对整数数组排序(降序)。 求大神帮忙啊!!!谢谢