#define?N?50
創(chuàng)新互聯(lián)是專業(yè)的莊浪網(wǎng)站建設(shè)公司,莊浪接單;提供網(wǎng)站制作、網(wǎng)站設(shè)計,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行莊浪網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!
#includestdio.h
#includestdlib.h
#includetime.h
int?main()
{
int?a[N],i,j,tmp;
float?avg;
srand(time(0));
for(int?i=0;iN;i++)
a[i]=rand()%(500-15)+15;
//降序排列
for(i=0;iN-1;i++)?for(j=i+1;jN;j++)?
if(a[i]a[j])?{
tmp=a[i];a[i]=a[j];a[j]=tmp;
}
//輸出數(shù)組
for(i=0;iN;i++){
printf("%4d",a[i]);
if(i%5==5-1)?printf("\n");??//5個數(shù)據(jù)一行?
}?
}
#include?stdio.h
int?a[101],n;//定義全局變量,這兩個變量需要在子函數(shù)中使用
void?quicksort(int?left,int?right)
{
int?i,j,t,temp;
if(leftright)
return;
temp=a[left];?//temp中存的就是基準(zhǔn)數(shù)
i=left;
j=right;
while(i!=j)
{
//順序很重要,要先從右往左找
while(a[j]=temp??ij)
j--;
//再從左往右找
while(a[i]=temp??ij)
i++;
//交換兩個數(shù)在數(shù)組中的位置
if(ij)//當(dāng)哨兵i和哨兵j沒有相遇時
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
//最終將基準(zhǔn)數(shù)歸位?
第?1?章?一大波數(shù)正在靠近——排序
19
a[left]=a[i];
a[i]=temp;
quicksort(left,i-1);//繼續(xù)處理左邊的,這里是一個遞歸的過程
quicksort(i+1,right);//繼續(xù)處理右邊的,這里是一個遞歸的過程
}
int?main()
{
int?i,j,t;
//讀入數(shù)據(jù)
scanf("%d",n);
for(i=1;i=n;i++)
scanf("%d",a[i]);
quicksort(1,n);?//快速排序調(diào)用
//輸出排序后的結(jié)果
for(i=1;i=n;i++)
printf("%d?",a[i]);
getchar();getchar();
return?0;
}
樓下的幾個回答我怎么看也不是快速排序,所以我做了一個用快速排序法排序的程序
#includestdio.h
#includestdlib.h
#includetime.h
#define LEN 50
//快速排序(升)
void quicksup(int *arr,int low,int high)
{
int temp,l,r;
if(lowhigh)
{
l=low;
r=high;
temp=arr[low];
while(lowhigh)
{
while(lowhigharr[high]=temp)
high--;
if(lowhigh)
arr[low]=arr[high];
while(lowhigharr[low]=temp)
low++;
if(lowhigh)
arr[high]=arr[low];
}
arr[low]=temp;
quicksup(arr,l,low-1);
quicksup(arr,low+1,r);
}
}
//快速排序(降)
void quicksdown(int *arr,int low,int high)
{
int temp,l,r;
if(lowhigh)
{
l=low;
r=high;
temp=arr[low];
while(lowhigh)
{
while(lowhigharr[high]=temp)
high--;
if(high==LEN)
high--;
if(lowhigh)
arr[low]=arr[high];
while(lowhigharr[low]=temp)
low++;
if(lowhigh)
arr[high]=arr[low];
}
arr[low]=temp;
quicksdown(arr,l,low-1);
quicksdown(arr,low+1,r);
}
}
//初始化數(shù)組
void init(int *arr,int len)
{
int i;
for(i=0;ilen;i++)
{
arr[i]=rand()%1000;
}
}
//打印數(shù)組元素
void print(int *arr,int len)
{
int i;
printf("\n ?");
for(i=0;ilen;i++)
printf("%4d ?",arr[i]);
printf("\n");
}
int main()
{
int arr[LEN];
srand((unsigned)time(NULL));
init(arr,LEN);
printf("排序前:");
print(arr,LEN);
quicksup(arr,0,LEN);
printf("排序后(升):");
print(arr,LEN);
quicksdown(arr,0,LEN);
printf("排序后(降):");
print(arr,LEN);
return 0;
}
int a=0; //正在處理的數(shù)下標(biāo),分組時的循環(huán)1
int b; //正在循環(huán)的數(shù)下標(biāo),分組時的循環(huán)2
int num[50]; //輸入的數(shù)
int out[10][5]; //分好的數(shù),out[0]為一組
//排序部分:
while(a=49)
{
for(b=0;b=ab=49;b++)
{
if(num[b]=num[b+1])
{num[b]^=num[b+1],num[b+1]^=num[b],num[b]^=num[b+1];}; //兩數(shù)互換
};
};
//分組部分:
for(a=0;a=9;a++)
{
for(b=0;b=4;b++)
{
out[a][b]=num[a*10+b];
};
};
/*輸入部分和輸出部分就不加入了,這個你應(yīng)該會。排序部分用的是冒泡法。我手上暫時沒現(xiàn)成的編譯器,可能會有些錯,不過大致應(yīng)該是對的*/
你好??!
你的代碼就沒有輸出部分呀
輸出部分添加了,你看看吧
#include?"stdlib.h"
#include"stdio.h"
#include"time.h"
void?main()
{
int?n?,a[50],i,j,t;
srand(time?(NULL));
for(i=0;i50;i++)
{
a[i]=rand()%90+10;
for(j=0;ji-1;j++)
??? if?(a[i]==a[j])
??? ???i--;
}
printf("nafter:\n");
for(i=0;i50;i++)???????????//?下面這是打印輸出
{
if?(i%10==0)????????//?十個數(shù)字換行
printf("\n");
printf("%d?",a[i]);
}
}