1. c語言sort函數如何使用
C語言中沒有預置的sort函數。如果在C語言中,遇到有調用sort函數,就是自定義的一個函數,功能一般用於排序。
一、可以編寫自己的sort函數。
如下函數為將整型數組從小到大排序。
voidsort(int*a,intl)//a為數組地址,l為數組長度。
{
inti,j;
intv;
//排序主體
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語言基礎類型。
以下是qsort的一個例子:
#include<stdio.h>
#include<stdlib.h>
intcomp(constvoid*a,constvoid*b)//用來做比較的函數。
{
return*(int*)a-*(int*)b;
}
intmain()
{
inta[10]={2,4,1,5,5,3,7,4,1,5};//亂序的數組。
inti;
qsort(a,n,sizeof(int),comp);//調用qsort排序
for(i=0;i<10;i++)//輸出排序後的數組
{
printf("%d ",array[i]);
}
return0;
}(1)c語言sort頭文件擴展閱讀:
sort函數的用法(C++排序庫函數的調用)
對數組進行排序,在c++中有庫函數幫我們實現,這們就不需要我們自己來編程進行排序了。
(一)為什麼要用c++標准庫里的排序函數
Sort()函數是c++一種排序方法之一,學會了這種方法也打消我學習c++以來使用的冒泡排序和選擇排序所帶來的執行效率不高的問題!因為它使用的排序方法是類似於快排的方法,時間復雜度為n*log2(n),執行效率較高!
(二)c++標准庫里的排序函數的使用方法
I)Sort函數包含在頭文件為#include<algorithm>的c++標准庫中,調用標准庫里的排序方法可以不必知道其內部是如何實現的,只要出現我們想要的結果即可!
II)Sort函數有三個參數:
(1)第一個是要排序的數組的起始地址。
(2)第二個是結束的地址(最後一位要排序的地址的下一地址)
(3)第三個參數是排序的方法,可以是從大到小也可是從小到大,還可以不寫第三個參數,此時默認的排序方法是從小到大排序。
Sort函數使用模板:
Sort(start,end,排序方法)
下面就具體使用sort()函數結合對數組里的十個數進行排序做一個說明!
例一:sort函數沒有第三個參數,實現的是從小到大
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int a[10]={9,6,3,8,5,2,7,4,1,0};
for(int i=0;i<10;i++)
cout<<a[i]<<endl;
sort(a,a+11);
for(int i=0;i<10;i++)
cout<<a[i]<<endl;
return 0;
}
編譯器
GCC,GNU組織開發的開源免費的編譯器
MinGW,Windows操作系統下的GCC
Clang,開源的BSD協議的基於LLVM的編譯器
Visual C++:: cl.exe,Microsoft VC++自帶的編譯器
集成開發環境
CodeBlocks,開源免費的C/C++ IDE
CodeLite,開源、跨平台的C/C++集成開發環境
Orwell Dev-C++,可移植的C/C++IDE
C-Free
Light Table
Visual Studio系列
Hello World
2. sort函數在C語言中如何使用
排序(sort)
語法:
void sort();
void sort( Comp compfunction );
sort()函數為鏈表排序,默認是升序。如果指定compfunction的話,就採用指定函數來判定兩個元素的大小。
3. c語言中的sort函數怎麼使用,請舉出一個實例,非常感謝!
#include<algorithm>//需要包含這個頭文件
#include<iostream>
usingnamespacestd;
intmain(void)
{
inta[10]={2,4,8,5,7,1,10,6,9,3};
sort(a,a+10);//對a數組進行升序排序
for(inti=0;i<10;i++)
cout<<a[i]<<endl;
}
//ps:這是C++的函數C語言里沒有。
4. C語言怎麼使用sort函數,求舉個簡單的例子,謝謝
用 qsort,並且要自己寫比較函數。
例如:有個 int a[1000] 的數組要排序。而比較函數你已經寫好了名字是 comp,則這樣寫:
qsort(a,1000,sizeof(int),comp);
比較函數 comp 如下:
intcomp(constvoid*a,constvoid*b)
{
return*(int*)a-*(int*)b;
}
詳細的可以查一下關於 qsort 的說明。
5. C語言中有sort函數嗎
#include <stdlib.h>
然後可以用qsort
是用款蘇排序演算法實現的。
6. sort什麼意思c語言
C語言標准庫中沒有sort,sort是C++標准庫裡面的函數,在頭文件algorithm中,用於排序,一般這樣使用:
inta[10]={2,4,1,5,6,3,0,9,8,7};
sort(a,a+10);//升序排列
有時需要自定義一個比較函數:
boolcmp(inta,intb){
returna>b;
}
intmain(){
inta[10]={2,4,1,5,6,3,0,9,8,7};
sort(a,a+10,cmp);//降序排列
}
也可以利用比較函數排序自定義類型:
structA{
intx,y;
};
boolcmp(Ax,Ay){
if(A.x!=B.x)returnA.x<B.x;
returnA.y<B.y;
}
intmain(){
Aa[3]={{1,3},{2,3},{2,4}};
sort(a,a+3,cmp);//按x升序排列,若x相同按y升序排列
}
7. C語言中有sort函數嗎,該如何解決
沒有就自己去實現咯,要麼去找別人寫的那些現成的庫
8. C語言程序設計sort功能
最簡單的冒泡排序
冒泡排序(Bubble Sort),是一種計算機科學領域的較簡單的排序演算法。
它重復地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成。
這個演算法的名字由來是因為越大的元素會經由交換慢慢「浮」到數列的頂端,故名.
冒泡排序演算法的運作如下:(從後往前)
1.比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
2.對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最3.後的元素應該會是最大的數。
4.針對所有的元素重復以上的步驟,除了最後一個。
5.持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。
#include<stdio.h>
#defineSIZE10
voidbubble_sort(inta[],intn);
voidbubble_sort(inta[],intn)
{
inti,j,temp;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{
if(a[i]<a[j])//注意排序是小的冒起來,大的往下,即大的在前,小的在後
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
intmain()
{
intnumber[SIZE]={1,2,3,4,5,6,7,8,9,10};
inti;
bubble_sort(&number[3],5);//注意,排序范圍是從4-8
for(i=0;i<SIZE;i++)
{
printf("%d",number[i]);//結果是C
}
printf(" ");
}