Ⅰ 各種排序演算法的比較
小朋友啊,你這不是問題是作業啊。
Ⅱ 排序演算法比較問題
其實最快的是樹形選擇排序(也叫錦標賽排序),如果沒有,則堆排序要好些
因為快速排序和基數排序可以類比地說是批量操作,找出前10名和5000名的時間差別不大
而堆排序建立好初始堆後,只需要最多log2n就可以找到一個
Ⅲ 排序演算法比較
有問題Google一下!或網路一下!哈哈
Ⅳ 、題目:各種排序演算法實現和比較
給個聯系方式。我發給你!!!
Ⅳ 幾種排序演算法效率的比較
插入排序,選擇排序,交換排序(冒泡),數據結構書上有詳細的介紹
以下是直接插入排序,選擇排序,希爾排序,冒泡排序的演算法
/*直接插入排序的基本思想是:順序地把待排序序
列中的各個記錄按其關鍵字的大小,插入到已排
序的序列的適當位置。
*/
void InsertSort(elemtype x[], int n)
{
int i,j;
elemtype s;
for(i=0;i<n-1;i )
{
s = x[i 1];
j = i;
while(j>-1 && s.key<x[j].key)
{
x[j 1] = x[j];
j--;
}
x[j 1]=s;
}
}
/*選擇排序的基本思想是:不斷從待排序的序列中
選取關鍵字最小的記錄放到已排序的記錄序列的
後面,知道序列中所有記錄都已排序為止。
*/
void SelectSort(elemtype x[], int n)
{
int i,j,Small;
elemtype Temp;
for(i=0;i<n-1;i )
{
Small = i;
for(j=i 1;j<n;j )
{
if(x[j].key<x[Small].key)
Small = j;
}
if(Small!=i)
{
Temp = x[i];
x[i] = x[Small];
x[Small] = Temp;
}
}
}
/*希爾排序的基本思想是:不斷把待排序的記錄分
成若干個小組,對同一組內的記錄進行排序,在
分組時,始終保證當前組內的記錄個數超過前面
分組排序時組內的記錄個數。
*/
void ShellSort(elemtype x[], int n, int d[], int Number)
{
int i, j, k, m, Span;
elemtype s;
for(m=0;m<Number;m )
{
Span = d[m];
for(k=0;k<Span;k )
{
for(i=k;i<n-Span;i =Span)
{
s = x[i Span];
j = i;
while(j>-1 && s.key<x[j].key)
{
x[j Span] = x[j];
j-=Span;
}
x[j Span] = s;
}
}
}
}
/*冒泡排序的基本思想是:將待排序序列中第一個
記錄的關鍵字R1與第二個記錄的關鍵字R2做比較,
如果R1>R2,則交換R1和R2的位置,否則不交換;
然後繼續對當前序列中的第二個記錄和第三個記
錄同樣的處理,依此類推。
*/
void BubbleSort(elemtype x[], int n)
{
int i,j,flag=1;
elemtype temp;
for(i=1;i<n && flag==1;i )
{
flag=0;
for(j=0;j<n-i;j )
{
if(x[j].key>x[j 1].key)
{
flag=1;
temp=x[j];
x[j]=x[j 1];
x[j 1]=temp;
}
}
}
}
Ⅵ 排序演算法的實現和比較
int main()
{
int i,j,t,a[10];
printf("Please input 10 integers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++) /* 冒泡法排序 */
for(j=0;j<10-i-1;j++)
if(a[j]>a[j+1])
{t=a[j];/* 交換a[i]和a[j] */
a[j]=a[j+1];
a[j+1]=t;
Ⅶ 幾種排序演算法的效率比較
[內部排序的主要演算法及相關可實現程序.rar
] - 內部排序的所有演算法,而且有相關可執行例子,包括插入排序,選擇排序,希爾排序,快速排序,堆排序,歸並排序等,很全,很孀。[排序演算法、字典和B-樹的C++語言實現.zip
] - 排序演算法、字典和B-樹的C++語言實現
代碼內容 包括以下演算法:
qui.c sort: quicksort
qsort.c sort: qsort
ins.c sort: insert sort
shl.c sort: shell sort
has.c dictionary:[幾種排序方法的實現.rar
] - 用 插入排序, 希爾排序 ,冒泡, 快速排序 , 選擇排序 ,堆排序, 歸並排序 實現對任意隨機數序列,並比較各種方法的運行快慢和復雜度[paixu.rar] - 內部排序演算法比較
] - 一個用VC++6.0做的一個資料庫方面的程序,是用來英語學習的,有助於VC資料庫編程的學習。[各種排序方法比較.rar
] - 這個程序包括了各種常用內部排序演算法在平均排序所需時間上的比較.[實現各種排序演算法並分析與比較.rar
] - 本程序實現各種排序演算法並分析與比較 直接插入排序, SHELL排序,冒泡排序,快速排序,簡單選擇排序,堆排序,歸並排序[圖論演算法庫 C++ 語言實現.zip
] - 圖論演算法庫 C++ 語言實現
代碼內容 圖論演算法庫,包括以下演算法:
Ⅷ 排序演算法比較研究
杯具~~
Ⅸ 排序演算法性能比較(數據結構)C語言程序
這題你只要把每個演算法的程序代碼看一下,在計算下就行
冒泡排序:兩個循環,從1加到N,(1+N)N/2 = 500500,最壞交換情況是每次判斷都要交換,既500500*3次
選擇排序:也是兩個循環,比較次數跟冒泡排序一樣500500,但是這個只要底層循環交換,既只需1000*3 = 3000次賦值。
插入排序:循環次數一樣500500,但是這個最壞情況是每比較一次就賦值一次,既需500500次賦值
希爾排序:時間復雜度是N^1.3倍,比較次數和賦值應該是1000^1.3次方。
歸並排序和快速排序,你去查查它的時間復雜度是怎麼算,O(lgN*N),好像有系數,演算法導論那本書上有,現在不記得是多少了。
希望能幫到你,
Ⅹ 求各種排序演算法的比較
給你一個國家集訓隊的快排吧,這個應該夠用了。
這個是對a數組從小到大排序,把這個添加到任何程序中都很快。這個肯定要比堆排序快。對於插入排序快的快排肯定要較慢。但這個比較穩定,要不國家集訓隊怎麼用它呢!!!!!!
procere qsort(l,r:longint);
var
i,j,x,yy:longint;
begin
i:=l;j:=r;x:=a[(i+j) shr 1];
repeat
while a[i]<x do inc(i);
while a[j]>x do dec(j);
if i<=j then
begin
yy:=a[i];a[i]:=a[j];a[j]:=yy;
inc(i);dec(j);
end;
until i>j;
if i<r then qsort(i,r);
if l<j then qsort(l,j);
end;