當前位置:首頁 » 編程語言 » 快速排序從小到大排序C語言
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

快速排序從小到大排序C語言

發布時間: 2022-06-14 19:40:23

c語言程序從小到大排序要怎麼寫啊

冒泡排序法: /*#include<iostream.h> void main() { int a[10],temp,i,j; for(i=0;i<=9;i++) { cout<<"a["<<i<<"]="; cin>>a[i]; } for(i=0;i<=8;i++)//9+8+'''+1=45次 for(j=0;j<=8-i;j++) { if(a[j]<a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } for(i=0;i<=9;i++) cout<<a[i]<<'\n'; }*/ //選擇排序法 /*#include<iostream.h> void main() { int a[10],temp,i,j; for(i=0;i<=9;i++) { cout<<"a["<<i<<"]="; cin>>a[i]; } for(i=0;i<=8;i++)// for(j=i+1;j<=9;j++) { if(a[i]<a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } } for(i=0;i<=9;i++) cout<<a[i]<<'\n'; }*/ // 進行插入排序演算法 #include<iostream.h> void main() { int a[10],i,j,n=10,index,inserter; for(j=0;j<=9;j++) { cout<<"a["<<j<<"]="; cin>>a[j]; } for(i=1;i<n;i++) { inserter=a[i]; index=i-1; while(index>=0&&inserter<a[index]) { a[index+1]=a[index]; index--; } a[index+1]=inserter; } for(j=0;j<=9;j++) cout<<a[j]<<'\n'; }

② C語言:輸入5個數,用調用函數的方法,從小到大排序 用簡單點的

#include<stdio.h>

voidsort(float*a,intn)

{

inti,j,tmp;

for(i=0;i<n-1;i++)

for(j=0;j<n-i-1;j++)

if(a[j]>a[j+1])

{

tmp=a[j];

a[j]=a[j+1];

a[j+1]=tmp;

}

}

voidmain()

{

floata[5];

inti;

printf("請輸入五個數(逗號隔開):");

scanf("%f,%f,%f,%f,%f",&a[0],&a[1],&a[2],&a[3],&a[4]);

sort(a,5);

printf("排序後為:");

for(i=0;i<5;i++)

printf("%.2f",a[i]);

printf(" ");

}

或者三個數的。

void sort(int *a, int *b, int *c)

{

int tmp;

if(*a>*b){

tmp = *b;

*b = *a;

*a = tmp;

}

if(*a>*c){

tmp = *c;

*c = *a;

*a = tmp;

}

if(*b>*c){

tmp = *c;

*c = *b;

*b = tmp;

}

return;

}

(2)快速排序從小到大排序C語言擴展閱讀:

C語言中沒有預置的sort函數。如果在C語言中,遇到有調用sort函數,就是自定義的一個函數,功能一般用於排序。

一、可以編寫自己的sort函數。
如下函數為將整型數組從小到大排序。void sort(int *a, int l)//a為數組地址,l為數組長度。

{

int i, j;

int v; //排序主體

for(i = 0; i < l - 1; i ++)

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

{

if(a[i] > a[j])//如前面的比後面的大,則交換。

{

v = a[i];

a[i] = a[j];

a[j] = v;

}

}

}

對於這樣的自定義sort函數,可以按照定義的規范來調用。

二、C語言有自有的qsort函數。
功 能: 使用快速排序常式進行排序。頭文件:stdlib.h
原型:

void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *));

參數:

1、待排序數組首地址。

2、數組中待排序元素數量。

3、各元素的佔用空間大小4 指向函數的指針,用於確定排序的順序,這個函數必須要自己寫比較函數,即使要排序的元素是int,float一類的C語言基礎類型。

③ c語言 :用交換排序法對10個數據進行排序 從小到大 怎麼做啊

#include <stdio.h>
void main()
{
int a[10];
int i,j;
int tmp;
printf("請依次輸入10個數字:\n");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<10;i++)
{
for(j=0;j<10-i;j++)
{
if(a[j]>a[j+1])
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
printf("這10個數從小到大排序是:\n");
for(i=0;i<10;i++)
{
printf("%d\t",a[i]);
}
}

④ 隨機生成一組整數,利用快速排序思想,將其從小到大排好。(c語言代碼)

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#defineRANDOM(i)(rand()%i)//隨機的常量
#defineN10//設置數組長度
//分區操作
intPartition(intarray[],intleft,intright)
{
inti,j;
inttemp;
j=left-1;
for(i=left;i<=right;i++)
{
if(array[i]<=array[right])//以最後一個數組的值為基準
{
j++;
temp=array[j];
array[j]=array[i];
array[i]=temp;
}
}
returnj;
}

//迭代運算
voidQuikSort(intarray[],intleft,intright)
{
intpivot;
if(left<right)
{
pivot=Partition(array,left,right);
QuikSort(array,left,pivot-1);
QuikSort(array,pivot+1,right);
}
}

/*主函數*/
intmain()
{
inti=0;
inta[N];
srand((int)time(0));//設置隨機數種子
for(i=0;i<N;i++)//排序前
{
a[i]=RANDOM(100);//100以內的隨機數
printf("%d ",a[i]);//輸出隨機得到的數組
}
printf(" ");
QuikSort(a,0,N-1);
for(i=0;i<N;i++)//輸出排序後的數組
{
printf("%d ",a[i]);
}
printf(" ");
}

⑤ 在C語言中 編寫一個程序實現從小到大排序

#include<stdio.h>
#include<stdlib.h>

intcmp(constvoid*a,constvoid*b)
{
return*(int*)a-*(int*)b;
}

intmain(intargc,char**argv)
{
inta[]={1,-2,53,49,144,65,267,98,112};
inti;

qsort(a,sizeof(a)/sizeof(int),sizeof(int),cmp);

for(i=0;i<sizeof(a)/sizeof(int);++i)
printf("%d",a[i]);

printf(" ");

return0;
}

如果要自己實現排序函數的話

#include<stdio.h>

voidqsort(int*a,intleft,intright)
{
intp=(left+right)/2;//以中間數作為主元
intk=a[p];
inti=left,j=right;

while(i<j)
{
//從左邊開始將大於主元的數放在主元右邊
while((i<=p)&&(a[i]<=k))
++i;
if(i<p)
{
a[p]=a[i];
p=i;
}

//從右邊開始將小於主元的數放在左邊
while((j>=p)&&(a[j]>=k))
--j;
if(j>p)
{
a[p]=a[j];
p=j;
}
}

a[p]=k;
//如果左邊的數大於1個則遞歸左邊
if(p-left>1)
qsort(a,left,p-1);
//如果右邊的數大於1個則遞歸右邊
if(right-p>1)
qsort(a,p+1,right);
}

intmain(intargc,char**argv)
{
inta[]={1,-2,53,49,144,65,267,98,112};
inti;

qsort(a,0,sizeof(a)/sizeof(int)-1);

for(i=0;i<sizeof(a)/sizeof(int);++i)
printf("%d",a[i]);
printf(" ");

return0;
}

⑥ c語言將數組從小到大排序

#include<stdio.h>
intmain()
{
inta[20];
inti,j,temp;
int*p=&a[0];
int*d;
intn;
printf("請輸入數組長度");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("請輸入這個數組 ");
scanf("%d",p++);//<=================

}
for(p=a;p<a+n;p++)//<=================
{
for(d=p+1;d<a+n;d++)//<=================
{
if(*p>*d)
{
temp=*p;
*p=*d;
*d=temp;
}
}
}
p=a;
for(p;p<a+n;p++)
{
printf("%d ",*p);

}
return0;
}

⑦ C語言四個數從小到大排序

# include <stdio.h>void main (){ int t,a,b,c,d;printf("請輸入4個數;");

scanf("%d,%d,%d,%d",&a,&b,&c,&d);

printf("a=%d,b=%d,c=%d,d=%d ",a,b,c,d);

if(a>b) {t=a;a=b;b=t;}if(a>b) {t=a;a=b;b=t;}}

⑧ C語言排序問題 將所有的數字從小到大的順序排序(快排)

1.comp是一個函數指針,因為qsort的第四個參數是一個函數指針,所以這里只需要傳comp函數指針就可以了。
2.參考樓上。
3.參考樓上。

⑨ c語言編程,有一組數據,98,12,87,4,65,23,54,33,48,78,將其由小到大排序

#include<stdio.h>

//序列「98,12,87,4,65,23,54,33,48,78」

void QuickSort(int a[],int left,int right)

{

int i,j,temp,tp;

temp=a[left];//暫存基準數

i=left;//最左位置

j=right;//最右位置

if(left>right)//遞歸結束條件

return;

while(i!=j)//當i和j不重合時

{

while(a[j]>=temp && i<j) //從右往左尋找小於基準數的值

j--;

while(a[i]<=temp && i<j) //從左往右尋找大於基準數的值

i++;

//找到了且i<j則交換數值

if(i<j)

{

tp=a[i];

a[i]=a[j];

a[j]=tp;

}

}

//將基準數和i、j的相遇數值進行交換

a[left]=a[i];

a[i]=temp;

//應用遞歸對此時基準數的左邊進行快速排序

QuickSort(a,left,i-1);

//應用遞歸對此時基準數的右邊進行快速排序

QuickSort(a,i+1,right);

}

void main()

{

int a[10],i;

printf("please input 10 numbers: ");

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

scanf("%d",&a[i]);

printf("The array is: "); //輸入序列「98,12,87,4,65,23,54,33,48,78」

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

printf("%-4d",a[i]);

QuickSort(a,0,9); //調用快速排序函數

printf(" After sort the array is: ");

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

printf("%-4d",a[i]);

printf(" ");

}



(9)快速排序從小到大排序C語言擴展閱讀:

include用法:

#include命令預處理命令的一種,預處理命令可以將別的源代碼內容插入到所指定的位置;可以標識出只有在特定條件下才會被編譯的某一段程序代碼;可以定義類似標識符功能的宏,在編譯時,預處理器會用別的文本取代該宏。

插入頭文件的內容

#include命令告訴預處理器將指定頭文件的內容插入到預處理器命令的相應位置。有兩種方式可以指定插入頭文件:

1、#include<文件名>

2、#include"文件名"

如果需要包含標准庫頭文件或者實現版本所提供的頭文件,應該使用第一種格式。如下例所示:

#include<math.h>//一些數學函數的原型,以及相關的類型和宏

如果需要包含針對程序所開發的源文件,則應該使用第二種格式。

採用#include命令所插入的文件,通常文件擴展名是.h,文件包括函數原型、宏定義和類型定義。只要使用#include命令,這些定義就可被任何源文件使用。

⑩ c語言怎樣實現快速排序

include<stdio.h>

int arr_num[];
int length;

void quick_sort(int left, int right)
{
int i, j, c, temp;
if(left>right)
return;

i= left;
j= right;
temp = arr_num[i]

while(i != j)
{
while(arr_num[j]>=temp && i<j)
{
j--;
}

while(arr_num[i]<=temp && i<j)
{
i++;
}

if(i<j)
{
c = arr_num[i];
arr_num[i] = arr_num[j];
arr_num[j] = c;
}
}

//left為起始值(參照值)此時的I為第一次排序結束的最後值,與參照值交換位置
arr_num[left] = arr_num[i];
arr_num[i] = temp;

//繼續遞歸直到排序完成
quick_sort(left, i-1);
quick_sort(i+1, right);
}

int main()
{
int i;
length = 7;
arr_num[length] = {23, 7, 17, 36, 3, 61, 49}

//快速排序調用
quick_sort(0, length-1);

//輸出排序後的結果
for(i=1;i<=length;i++)
printf("%d ",arr_num[i]);
getchar();getchar();
return 0;
}