急需C语言快速排序程序 通过加高分
答案:2 悬赏:60 手机版
解决时间 2021-04-23 05:55
- 提问者网友:轻浮
- 2021-04-22 11:29
寻找一个 能够快速排序的程序 在运行时 在弹出DOS框里 输入任意数 按回车 可以按顺序排序 十个数就可以了
最佳答案
- 五星知识达人网友:纵马山川剑自提
- 2021-04-22 12:00
#include <stdio.h>
void Swap( int* a, int* b )
{
int t;
t = *a; *a = *b; *b = t;
}
void QSort( int* a, int l, int r )
{
int i, s = l;
if ( l >= r ) return;
for ( i = l; i < r; ++i ) {
if ( a[i] < a[r] )
Swap( a+i, a+s++ );
}
Swap( a+s, a+r );
QSort( a, l, s-1 );
QSort( a, s+1, r );
}
int main()
{
int a[10], i;
for ( i = 0; i < 10; ++i )
scanf( "%d", &a[i] );
QSort( a, 0, 9 );
for ( i = 0; i < 10; ++i )
printf( "%d ", a[i] );
}
void Swap( int* a, int* b )
{
int t;
t = *a; *a = *b; *b = t;
}
void QSort( int* a, int l, int r )
{
int i, s = l;
if ( l >= r ) return;
for ( i = l; i < r; ++i ) {
if ( a[i] < a[r] )
Swap( a+i, a+s++ );
}
Swap( a+s, a+r );
QSort( a, l, s-1 );
QSort( a, s+1, r );
}
int main()
{
int a[10], i;
for ( i = 0; i < 10; ++i )
scanf( "%d", &a[i] );
QSort( a, 0, 9 );
for ( i = 0; i < 10; ++i )
printf( "%d ", a[i] );
}
全部回答
- 1楼网友:走死在岁月里
- 2021-04-22 13:30
#include<stdio.h> void partition(int a[],int n,int &m) { int temp,k,i,j,middle; i=0; j=n-1; k=(i+j)/2; if(a[i]>=a[j]&&a[j]>=a[k]) middle=j; else if(a[i]>=a[k]&&a[k]>=a[j]) middle=k; else middle=i; temp=a[middle]; a[middle]=a[i]; while(i!=j) { while(a[j]>=temp&&i<j) j--; if(i<j) { a[i]=a[j]; i++; } while(a[i]<=temp&&i<j) i++; if(i<j) { a[j]=a[i]; j--; } } a[i]=temp; m=i; }
void quick_sort(int a[],int n) { int i; if(n>1) { partition(a,n,i); quick_sort(a,i); quick_sort(&a[i+1],n-i-1); } }
void main() { int i; int a[10]={10,8,9,6,7,2,3,1,5,4}; quick_sort(a,10); for( i=0;i<10;i++) printf("%d\t",a[i]);
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯