如何对十个数进行排序?

如题所述

用选择法对10个整数递增排序。10个整数用scanf函数输入

选择法:假设集合A有n个元素,按以下算法完成递增排序:

(1)\x05以一个元素为基准,从一个方向开始扫描,比如以A[0]为基准,从左至右扫描;

(2)\x05用A[0]右边的A[1]-A[n-1]与A[0]比较,找出最小的元素,将其与A[0]交换;

(3)\x05将基准位置右移一位,即移到A[1],重复(1)和(2)动作,比如,以A[1]为基准,找出A[1]-A[n-1]中最小的,将其与A[1]交换。一直进行到基准位置移到数组最后一个元素时排序结束(此时基准左边所有元素均递增有序,而基准为最后一个元素,故完成排序)。

#include<stdio.h>

void main()

{

int i,j,min,temp,a[11];

printf("enter data;\n");

for(i=1;i<=10;i++)

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

scanf("%d",&a<i>);

}

printf("\n");

printf("The original numbers:\n");

for(i=1;i<=10;i++)

printf("%5d",a<i>);

printf("\n");

for(i=1;i<=9;i++)

{min=i;

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

if(a[min]>a[j])min=j;

temp=a<i>;

a<i>=a[min];

a[min]=temp;

}

printf("\nThe sored numbers;\n");

for(i=1;i<=10;i++)

printf("%5d",a<i>);

printf("\n");

}

扩展资料:

选择排序每次找出所剩元素中最小(大)的值

void selectionSort(int arr[],int n)

{

for(int i=0;i<n;i++){

//寻找[i,n)区间的最小值

int minIndex=i;

for(int j=i+1;j<n;j++)

if(arr[j]<arr[minIndex])

minIndex=j;

swap(arr<i>,arr[minIndex]);

}

}

参考资料

百度百科——算法

温馨提示:答案为网友推荐,仅供参考
相似回答