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