用C语言快速排序法编程按从大到小输出下面十个数(24,2,8,32,87,45,16,2,12,40)

如题所述

#include "stdio.h"
#include "stdlib.h"

void QuickSort(int low, int high, int array[]) {
int Low, High, temp;
if (low < high) { /*要排序的元素起止下标,保证小的放在左边,大的放在右边。这里以下标为low的元素为基准点*/
Low = low;
High = high;
temp = array[low]; /*暂存基准点的数*/
while (Low < High) { /*循环扫描*/
while (Low < High && array[High] >= temp) { /*在右边的只要比基准点大仍放在右边*/
High--; /*前移一个位置*/
}
if (Low < High) {
array[Low] = array[High]; /*上面的循环退出:即出现比基准点小的数,替换基准点的数*/
Low++; /*右移一个位置*/
}
while (Low < High && array[Low] <= temp) { /*在左边的只要小于等于基准点仍放在左边*/
Low++; /*后移一个位置*/
}
if (Low < High) {
array[High] = array[Low]; /*上面的循环退出:即出现比基准点大的数,放到右边*/
High--; /*前移一个位置*/
}
}
array[Low] = temp; /*一遍扫描完后,放到适当位置*/
QuickSort(low,Low-1,array); /*对基准点左边的数再执行快速排序*/
QuickSort(Low+1,high,array); /*对基准点右边的数再执行快速排序*/
}
}
void main() {
int array[]={24,2,8,32,87,45,16,2,12,40};
int i=9;
QuickSort(0,9,array);

for(;i>=0;i--)
printf("%d ",array[i]);
getch();
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-04-13
#include<stdio.h>
void sort(int b[],int lef,int rig)
{
int le,ri,temp;
temp=b[lef];
le=lef;
ri=rig;
while(le<ri)
{
while(b[ri]<=temp&&le<ri)
ri--;
b[le]=b[ri];
while(b[le]>=temp&&ri>le)
le++;
b[ri]=b[le];
}
b[le]=temp;
if(le>lef)
sort(b,lef,ri-1);
if(ri<rig)
sort(b,ri+1,rig);

}
int main()
{
int i;
int a[10]={24,2,8,32,87,45,16,2,12,40};
sort(a,0,9);
for(i=0;i<10;i++)
printf("%d\t",a[i]);
printf("\n");
return 0;
}本回答被提问者和网友采纳
第2个回答  2011-01-17
int[] a=new int[]{24,2,8,32,87,45,16,2,12,40};
Array.Sort(a);
for(int i=1;i<=a.Length;i++)
{
for(int j=0;j<a.Length-i;j++)
{
if(a[j]<a[i])
{
int tmp=(int)a[j];
a[j]=a[j+1];
a[j+1tmp;
}
}
}

用C语言快速排序法编程按从大到小输出下面十个数(24,2,8,32,87,45...
QuickSort(low,Low-1,array); \/*对基准点左边的数再执行快速排序*\/ QuickSort(Low+1,high,array); \/*对基准点右边的数再执行快速排序*\/ } } void main() { int array[]={24,2,8,32,87,45,16,2,12,40};int i=9;QuickSort(0,9,array);for(;i>=0;i--)printf("%d ",...

c语言,求教用快速排序法,将十个数按大小顺序输出。
不明白,请追问。#include "stdio.h"#include "stdlib.h"#include "math.h"main(){int a[12];int i,j,t;printf("请输入10个数:\\n");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("排序前的数列为:\\n");for(i=0;i<10;i++)printf("%4d",a[i]);printf("%\\n")...

求大神编写一个从大到小快速排序C语言程序,注意是从大到小!急,在线等...
int i;int a[10]={24,2,8,32,87,45,16,2,12,40};sort(a,0,9);for(i=0;i<10;i++)printf("%d ",a[i]);printf("\\n");return 0;}

编写程式输出十个同学C语言成绩,并从大到小排序
include<stdio.h>intmain(){doublea[10];inti,j;doubletem;boolbchange=false;printf("请输入10位同学的C语言成绩,用空格隔开:\\n");for(i=0;i<10;i++){scanf("%lf",&a[i]);}Bubblefor(i=1;i<10;i++){bchange=false;for(j=0;j<10-i;j++){if(a[j]<a[j+1]){tem=a[...

用C语言编写一个快速排序算法 输入10个数
1、“快速排序法”使用的是递归原理,下面一个例子来说明“快速排序法”的原理。首先给出一个数组{53,12,98,63,18,72,80,46, 32,21},先找到第一个数--53,把它作为中间值,也就是说,要把53放在一个位置,使得它左边的值比它小,右边的值比它大。{21,12,32, 46,18,53,...

如何将c语言实现按从小到大的顺序输出?
C语言实现将数组的六个元素按从小到大的顺序输出,可以采用内部排序算法对数组的元素进行排序,然后输出排序后的数组,就可以得到按从小到大的顺序输出。以快速排序为例的排序代码:void quickSort(int a[],int l,int r) { if(l>=r)return;int i = l;int j = r;int key = a[l];\/\/选择...

如何用C语言输入十个随机的数进行排序?
1、首先打开编辑软件,新建一个c程序空文件,引入标准库和主函数,定义一个QuickSort函数用来排序,下面首先编写排序函数的:2、此处用到快速排序思想,通过一趟排序将要排序的数据分割成独立的两部分,即这里用i和j两个变量分割数据,然后一部分的所有数据都比另外一部分的所有数据都要小,接着对这两部分...

随机生成一组整数,利用快速排序思想,将其从小到大排好。(c语言代码)
temp = array[j]; array[j] = array[i]; array[i] = temp; } } return j;}\/\/迭代运算void QuikSort(int array[], int left, int right){ int pivot; if (left < right) { pivot = Partition(array, left, right); QuikSort(array, left, pivot-1); QuikSort(array...

有十个数,要按大小顺序输出~用c语言程序写出来~大神快来指导下...
\/\/选择排序#include <stdio.h>int main(){ int i,a[10],j,index,tmp; for(i=0;i<10;i++) scanf("%d", &a[i]); for(i=0;i<9;i++) { index=i; for(j=i+1;j<10;j++) if(a[j]>a[index]) index=j; tmp=a[index]; a[index]=a...

...C语言) 如a[10]={58,37,126,10,13,20,87,15,24,40}
include <stdlib.h> static int my_cmp(const void *v1, const void *v2);int main(void){ int i;int a[10] = {58, 37, 126, 10, 13, 20, 87, 15, 24,40};\/* 使用系统库的快速排序 *\/ qsort(a, sizeof a \/ sizeof a[0], sizeof a[0], my_cmp);\/* 输出结果 *\/ ...

相似回答