输入一个数组,按从大到小的顺序排序(提示:可使用选择排序,冒泡排序或插入排序的任何一种)

来源:百度知道 编辑:UC知道 时间:2024/05/23 10:57:14
用C语言

选择排序:选择法排序是一种简单的容易实现的对数据排序的算法。
以整形数组元素为例,有数组A[10](以C语言为例描述),即A[0],A[1],…,A[8],A[9](假设其元素均互不相同)。要求对其元素排序使之递增有序。
首先以一个元素为基准,从一个方向开始扫描,比如从左至右扫描,以A[0]为基准。
接下来从A[0],…,A[9]中找出最小的元素,将其与A[0]交换。
然后将基准位置右移一位,重复上面的动作,比如,以A[1]为基准,找出A[1]~A[9]中最小的,将其与A[1]交换。
一直进行到基准位置移到数组最后一个元素时排序结束(此时基准左边所有元素均递增有序,而基准为最后一个元素,故完成排序)。
以下为一个用C描述的函数实现上述排序:
void sort(int array[],int n)
{ // n 为数组元素个数
int i,j,k,temp; // i 为基准位置,j 为当前被扫描元素位置,k 用于暂存出现的较小的元素的位置
for(i=0;i<n-1;i++)
{
k=i; //初始化为基准位置
for(j=i+1;j<n;j++)
{
if (array[j]<array[k]) k=j ; // k 始终指示出现的较小的元素的位置
{ temp=array[k];
array[k]=array;
rray=temp; // 将此趟扫描得到的最小元素与基准互换位置
}
} //for
}
}
其实现相对简单,效率比较低,时间复杂度为O(n2) (n 的平方) ,为就地排序。
冒泡排序法:基本思路:对尚未排序的各元素从头到尾依次比较相邻的两个元素是否逆序(与欲排顺序相反),若逆序就交换这两元素,经过第一轮比较排序后便可把最大(或最小)的元素排好,然后再用同样的方法把剩下的元素逐个进行比较,就得到了你所要的顺序。可以看出如果有 n 个元素,那么一共要进行 n-1 轮比较,第 i 轮要进行 j=n-i

一个已按从小到大的顺序排好的数组,今输入一个数要求按原来排序的规律将它插入数组中。 用C编程:有一个已经按从大到小排列的整数数组,今输入一个整数,要求按原来的排列规律插入到数组中。 输入4个正整数,按从大到小的顺序输出! 输入十个数,按从大到小的顺序输出 输入3个数,按从大到小的顺序输出 用基本语句写一个算法,要求输入50革数,按从大到小的顺序输出。 帮忙编C语言题...3Q....<输入10个整数到一个一维数组中,并按由小到大的顺序输出> 从屏幕输入5个整数存储在数组,打印输入原始输入的5个数据,进行排序,由小到大的顺序重新输出 有15个数按小到大的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数组中第几个元素的值. 有15个数那从大到小顺序排列存放在1个数组中,输入一个数找出该数是这个数组的第几个元素的值