sort不屬于C語(yǔ)言的標(biāo)準(zhǔn)函數(shù),所以也沒(méi)有相應(yīng)的頭文件,但是可以自定義。
成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)服務(wù)團(tuán)隊(duì)是一支充滿(mǎn)著熱情的團(tuán)隊(duì),執(zhí)著、敏銳、追求更好,是創(chuàng)新互聯(lián)的標(biāo)準(zhǔn)與要求,同時(shí)竭誠(chéng)為客戶(hù)提供服務(wù)是我們的理念。成都創(chuàng)新互聯(lián)公司把每個(gè)網(wǎng)站當(dāng)做一個(gè)產(chǎn)品來(lái)開(kāi)發(fā),精雕細(xì)琢,追求一名工匠心中的細(xì)致,我們更用心!
sort?函數(shù)為將整型數(shù)組從小到大排序。
voidsort(int*a,intl)//a為數(shù)組地址,l為數(shù)組長(zhǎng)度。
{
inti,j;
intv;
//排序主體
for(i=0;il-1;i++)
for(j=i+1;jl;j++)
{
if(a[i]a[j])//如前面的比后面的大,則交換。
{
v=a[i];
a[i]=a[j];
a[j]=v;
}
}}
擴(kuò)展資料
c語(yǔ)言自有的qsort函數(shù)
#includestdio.h
#includestdlib.h
intcomp(constvoid*a,constvoid*b)//用來(lái)做比較的函數(shù)。
{
return*(int*)a-*(int*)b;
}
intmain()
{
inta[10]={2,4,1,5,5,3,7,4,1,5};//亂序的數(shù)組。
inti;
qsort(a,n,sizeof(int),comp);//調(diào)用qsort排序
for(i=0;i10;i++)//輸出排序后的數(shù)組
{
printf("%d\t",array[i]);
}
return0;
}
#include stdio.h
#include stdlib.h
#include time.h
#define MAXlen 100
void select_sort(int *x, int n) { //選擇排序
int i, j, min;
int t;
for (i = 0; i n - 1; i++) { // 要選擇的次數(shù):0~n-2共n-1次
min = i; // 假設(shè)當(dāng)前下標(biāo)為i的數(shù)最小,比較后再調(diào)整
for (j = i + 1; j n; j++) { //循環(huán)找出最小的數(shù)的下標(biāo)是哪個(gè)
if (*(x + j) *(x + min)) {
min = j; // 如果后面的數(shù)比前面的小,則記下它的下標(biāo)
}
}
if (min != i) { // 如果min在循環(huán)中改變了,就需要交換數(shù)據(jù)
t = *(x + i);
*(x + i) = *(x + min);
*(x + min) = t;
}
}
}
int main() {
int i;
int iArr[MAXlen];
srand((unsigned int)time(NULL));
printf("\n排序前:\n");
for(i = 0 ; i MAXlen ; i++) {
iArr[i] = (unsigned int)rand() % 1000;
if(i % 10 == 0) printf("%\n");
printf("%5d",iArr[i]);
}
printf("\n");
select_sort(iArr,MAXlen);
printf("\n排序后:\n");
for(i = 0 ; i MAXlen ; i++) {
if(i % 10 == 0) printf("%\n");
printf("%5d",iArr[i]);
}
printf("\n\n");
return 0;
}
#includestdio.h
void?sort(float?*a,?int?n)
{
int?i,j,tmp;
for(i=0;?in-1;?i++)
for(j=0;?jn-i-1;?j++)
if(a[j]a[j+1])
{
tmp?=?a[j];
a[j]?=?a[j+1];
a[j+1]?=?tmp;
}
}
void?main()
{
float?a[5];
int?i;
printf("請(qǐng)輸入五個(gè)數(shù)(逗號(hào)隔開(kāi)):");
scanf("%f,%f,%f,%f,%f",a[0],a[1],a[2],a[3],a[4]);
sort(a,5);
printf("排序后為:");
for(i=0;?i5;?i++)
printf("%.2f?",a[i]);
printf("\n");
}
或者三個(gè)數(shù)的。
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;
}
擴(kuò)展資料:
C語(yǔ)言中沒(méi)有預(yù)置的sort函數(shù)。如果在C語(yǔ)言中,遇到有調(diào)用sort函數(shù),就是自定義的一個(gè)函數(shù),功能一般用于排序。
一、可以編寫(xiě)自己的sort函數(shù)。
如下函數(shù)為將整型數(shù)組從小到大排序。void sort(int *a, int l)//a為數(shù)組地址,l為數(shù)組長(zhǎng)度。
{ ?
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;
? ? ?
}
?
}
}
對(duì)于這樣的自定義sort函數(shù),可以按照定義的規(guī)范來(lái)調(diào)用。
二、C語(yǔ)言有自有的qsort函數(shù)。
功 能: 使用快速排序例程進(jìn)行排序。頭文件:stdlib.h
原型:
void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *));
參數(shù):
1、待排序數(shù)組首地址。
2、數(shù)組中待排序元素?cái)?shù)量。
3、各元素的占用空間大小4 指向函數(shù)的指針,用于確定排序的順序,這個(gè)函數(shù)必須要自己寫(xiě)比較函數(shù),即使要排序的元素是int,float一類(lèi)的C語(yǔ)言基礎(chǔ)類(lèi)型。
C語(yǔ)言將數(shù)組元素大小排序方法:
以下使用的是冒泡排序法實(shí)線(xiàn)數(shù)組從小到大排序。
思想:每次相鄰兩個(gè)數(shù)比較,若升序,則將大的數(shù)放到后面,一次循環(huán)過(guò)后,就會(huì)將最大的數(shù)放在最后。
10、2、3、4、5、6、9、8、7、1是輸入的待排序的數(shù)列,經(jīng)過(guò)第一次排序,將最大的,10放在最后,第二次排序,將剩下的2、3、4、5、6、9、8、7、1進(jìn)行冒泡,將當(dāng)前最大的9放在倒數(shù)第二的位置,以此類(lèi)推。
以下是具體代碼:
#include stdio.h
int main(){
int nums[10] = {10, 2, 3, 4, 5, 6, 9, 8, 7, 1};
int i, j, temp, isSorted;
//優(yōu)化算法:最多進(jìn)行 n-1 輪比較
for(i=0; i10-1; i++){
isSorted = 1;? //假設(shè)剩下的元素已經(jīng)排序好了
for(j=0; j10-1-i; j++){
if(nums[j] nums[j+1]){
temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
isSorted = 0;? //一旦需要交換數(shù)組元素,就說(shuō)明剩下的元素沒(méi)有排序好
}
}
if(isSorted) break; //如果沒(méi)有發(fā)生交換,說(shuō)明剩下的元素已經(jīng)排序好了
}
for(i=0; i10; i++){
printf("%d ", nums[i]);
}
printf("\n");
return 0;
}
擴(kuò)展資料:
其他將數(shù)組從小到大排序的算法
以下使用的是選擇排序法實(shí)現(xiàn)數(shù)組從小到大排序。
思想:從第一個(gè)數(shù)開(kāi)始,每次和后面剩余的數(shù)進(jìn)行比較,若升序,則如果后邊的數(shù)比當(dāng)前數(shù)字小,進(jìn)行交換,和后面的所有的數(shù)比較、交換后,就會(huì)將當(dāng)前的最小值放在當(dāng)前的位置
輸入的序列為10、2、3、4、5、6、9、8、7、1進(jìn)行一次排序后將最小的數(shù)放在了第一位(a[0]與它后面的所有數(shù)進(jìn)行比較,若a[0]比后面的數(shù)大,進(jìn)行交換),以此類(lèi)推。
以下是具體代碼:
#include stdio.h
int main(void){
int a[1001];
int n,i,j,t;
scanf("%d",n);//n為要排序的數(shù)的個(gè)數(shù)
//輸入需要排序的數(shù)
for(i=0;in;++i)
scanf("%d",a+i);
//接下來(lái)進(jìn)行排序
for(i=0;in-1;++i)//因?yàn)槊看涡枰蚢[i]后面的數(shù)進(jìn)行比較,所以到a[n-2](倒數(shù)第2個(gè)元素)就行
{
for(j=i+1;jn;++j)//j從i后一個(gè)開(kāi)始,a[i]與a[j]進(jìn)行比較
{
if(a[i]a[j])//a[i]為當(dāng)前值,若是比后面的a[j]大,進(jìn)行交換
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}//每排序一次,就會(huì)將a[i](包括a[i])之后的最小值放在a[i]的位置
for(j=0;jn;++j)
printf("%-5d",a[j]);
printf("\n\n");
}
return 0;
}
當(dāng)前名稱(chēng):c語(yǔ)言數(shù)組排序函數(shù),C語(yǔ)言數(shù)組排序函數(shù)
網(wǎng)站鏈接:http://chinadenli.net/article4/dsshhoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、軟件開(kāi)發(fā)、網(wǎng)頁(yè)設(shè)計(jì)公司、企業(yè)建站、外貿(mào)網(wǎng)站建設(shè)、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)