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

Posted

tags:

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

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

参考技术A 选择法:
#include "stdio.h"
main()

int a[11];
int i,j,k,n;
for (i=1;i<11;i++)
scanf("%d",&a[i]);
for(i=1;i<10;i++)
for(j=i+1;j<=10;j++)

(a[i]>a[j])?(a[0]=a[i],a[i]=a[j],a[j]=a[0]):(a[0]=0);

for(i=1;i<11;i++)
printf("%5d",a[i]);


起泡法:
#include "stdio.h"
main()

int a[11];
int i,j;
for(i=1;i<11;i++)
scanf("%d",&a[i]);
for(i=1;i<10;i++)
for(j=1;j<=10-i;j++)
(a[j]>a[j+1])?(a[0]=a[j],a[j]=a[j+1],a[j+1]=a[0]):(a[0]=0);
for(i=1;i<11;i++)
printf("%5d",a[i]);


自己学的时候写的。才写了不久,二种方法你可以做个比较。本回答被提问者采纳
参考技术B 谁能排链表啊.我愁 参考技术C #include "stdio.h"
#include "conio.h"
#define N 10
main()

int i,j,min,tem,a[N];
printf("please input ten num:\n");
for(i=0;i<N;i++)

printf("a[%d]=",i);
scanf("%d",&a[i]);

printf("\n");
for(i=0;i<N;i++)
printf("%5d",a[i]);
printf("\n");
for(i=0;i<N-1;i++)

min=i;
for(j=i+1;j<N;j++)
if(a[min]>a[j])
min=j;
tem=a[i];
a[i]=a[min];
a[min]=tem;

printf("After sorted \n");
for(i=0;i<N;i++)
printf("%5d",a[i]);
getch();
参考技术D //书上的名字叫最简单选择排序
#include <stdio.h>
int SelectMinKey(int arr[], int i, int len)

int j = 0;
int temp = arr[i];
for (; i<len-1; ++i)

if (temp>arr[i+1])

temp = arr[i+1];
j = i + 1;


return j;


void SelectSort(int arr[], int len)

int i,j;
for (i=0; i<len-2; ++i)

j = SelectMinKey(arr,i,len);
if (i!=j)

int temp;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;




int main(void)

int arr[] = 4, 23, 19, 20, 41, 12, 18, 36, 10, 89;
SelectSort(arr, 9);
for (int i=0; i<10; ++i)

printf(" %d ",arr[i]);

return 0;


//选择法里面的堆排序
#include <stdio.h>
void HeapAdjust(int arr[], int s,int t)//建立一个大顶堆

int temp = arr[s];
for (int i=2*s; i<=t; i*=2)

if (i<t && arr[i]<arr[i+1])

++i;

if (temp>=arr[i])

break;

arr[s] = arr[i];
s = i;

arr[s] = temp;

void Heap_Sort(int arr[], int n)//n为最后一个元素标

for (int i=n/2; i>=0; --i)

HeapAdjust(arr, i, n);

for (int i=n; i>0; --i)

int temp = arr[0];
arr[0] = arr[i];
arr[i] = temp;
HeapAdjust(arr, 0,i-1);



int main(void)

int arr[] = 4, 23, 19, 20, 41, 12, 18, 36, 10, 89;
Heap_Sort(arr, 9);
for (int i=0; i<10; ++i)

printf(" %d ",arr[i]);

return 0;

我以前学的时候自己写的,算你运气好!:)

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语言用选择法对10个整数按升序排列(指针变量表示数组)的主要内容,如果未能解决你的问题,请参考以下文章

输入3个整数,按从小到大的顺序输出(用指针处理)

c语言:指针 用选择法对10个整数由大到小顺序排序

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

用C语言写一个函数,用冒泡法对输入的10个字符按由小到大的顺序排列

c语言指针数组排序?

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