資源簡介
數據結構課程設計 包括以下算法:直接插入排序,希爾排序,冒泡排序,快排,簡單選擇排序,堆排序。完整DOC文檔,含源代碼,還有執行結果,完整的實驗報告

代碼片段和文件信息
#include
#include
#include
#include
#include
#define?MAX?10000
//long?Max;
long?dlta[10000];
int?a[MAX+1];
int?store[MAX+1];
long??int?com0=0mov0;
long??int?com1=0mov1=0;
long??int?com2=0mov2=0;
long??int?com3=0mov3=0;
long??int?com4=0mov4=0;
long??int?com5=0mov5=0;
double?t0t1t2t3t4t5;
void?randomizeNum(int?n)
{//N表示要產生的隨機數的數目
?long?i;
?for(i=0;i ?{
?a[i]=rand()%20000;
?????store[i]=a[i];
?//printf(“%5d“store[i]);
?}
?printf(“\n“);
}
void?restore(long?n)//將隨機產生的數據存儲在數組中
{
long?i;
????for(i=0;i {
a[i]=store[i];
}
}
//起泡排序
void?bubblesort(int?r[]long?n)
{
long?ij;
????long?w;
//long?int?com0=0mov0=0;
for(i=0;i<=n-1;i++)
for(j=n-1;j>=i+1;j--)
{
if(r[j] {
w=r[j];
????????r[j]=r[j-1];
????????r[j-1]=w;
mov0=mov0+3;
}
com0++;
}
printf(“\n起泡排序 比較次數等于 ?%ld移動次數等于 ?%ld\n“com0mov0);
}
//直接插入排序
void?insertsort(int?r[]long?n)
{
?long?ij;
?int?watch;
?//long?int?com1=0mov1=0;
?for(i=1;i ?{?
?com1++;
?????if(r[i] ?{
?watch=r[i];
?????????r[i]=r[i-1];
?????????mov1++;?
?for?(j=i-2;watch ?{?
?r[j+1]=r[j];
?com1++;
?}
?r[j+1]=watch;
?mov1++;
?}
?}
printf(“\ninsertsort?compare=?%ldmove=?%ld\n“com1mov1);
}
//簡單選擇排序
void?selectsort(int?r[]long?n)
?{?????
??int?ijktemp;
??for(i=0;i ???{
??k=i;
??for?(j=i+1;j ??{
??com2++;
??????????if(r[j] ??k=j;?
??}
??temp=r[i];
??????r[i]=r[k];
??????r[k]=temp;
??????mov2=mov2+3;
??}
??printf(“\nSelectSort?compare=?%ldmove=?%ld\n“com2mov2);
}
//快速排序
int??Partition(int?R[]int?n?int?lowint?high)
{???
int?pivotkey;
????pivotkey=R[low];
????mov4++;
while(low {
while(?(low=pivotkey))
{?
--high;
????com4++;
}
R[low]=R[high];
????????mov4++;
while(?(low {
++low;
com4++;
}
R[high]=R[low];
????????mov4++;
}
R[low]=pivotkey;
????mov4++;
return?low;
}
void?QSort(int?R[]int?n?int?lowint?high)
{???
int?pivotloc;
if?(low {
pivotloc=Partition(Rnlowhigh);
????????QSort(Rnlow?pivotloc-1);
????????QSort(Rn?pivotloc+1high);
}
}
void?QuickSort(int?R[]int?n)
{??
QSort(Rn0n-1);
????printf(“\nQuickSort?compare=%ldmove=%ld\n“com1mov1);
}
//堆排序
void?Sift(int?R[]?int?s?int?m)
{//篩選算法
????int?tempj;
????temp=R[s];mov5++;
????for(j=2*s;j<=m;j*=2)
{
if?((j {
j++;
com5++;
}
????????com5++;
????????if?(temp>=R[j])?break;
????????R[s]=R[j];
????????mov5++;
????????s=j;
}
????R[s]=temp;
????mov5++;
}
void?HeapSort(int?R[]long?n)
{????
int?itemp;
????for?(i=n/2;i>=0;i--)//初始建堆
Sift(Rin);
for?(i=n-1;i>=0;i--)
{
temp=R[0];
????????R[0]=R[i];
????????R[i]=temp;
????????mov4=mov5+3;
????????Sift(R0i-1);
}
printf(“\nHeapSort?compare=%ldmo
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????15306??2009-05-03?20:37??內部排序\1.png
?????文件??????16714??2009-05-03?20:39??內部排序\2.png
?????文件???????3345??2009-05-03?20:41??內部排序\3.png
?????文件??????11573??2009-05-03?20:43??內部排序\4.png
?????文件???????6222??2009-05-03?20:44??內部排序\5.png
?????文件??????41984??2009-05-03?20:34??內部排序\Debug\vc60.idb
?????文件??????53248??2009-05-03?20:34??內部排序\Debug\vc60.pdb
?????文件?????249910??2009-05-03?20:34??內部排序\Debug\排序.exe
?????文件?????332836??2009-05-03?20:34??內部排序\Debug\排序.ilk
?????文件??????36600??2009-05-03?20:34??內部排序\Debug\排序.obj
?????文件?????615424??2009-05-03?20:34??內部排序\Debug\排序.pdb
?????文件?????321024??2010-03-10?19:26??內部排序\作業1.doc
?????文件??????10054??2009-05-03?20:34??內部排序\排序.cpp
?????文件???????3379??2009-05-03?20:21??內部排序\排序.dsp
?????文件????????516??2009-05-03?20:40??內部排序\排序.dsw
?????文件??????41984??2009-05-03?20:40??內部排序\排序.ncb
?????文件??????48640??2009-05-03?20:40??內部排序\排序.opt
?????文件???????1112??2009-05-03?20:34??內部排序\排序.plg
?????文件?????260428??2009-04-30?19:32??內部排序\排序算法比較.rar
?????文件??????26515??2009-05-03?12:50??內部排序\流程圖.jpg
?????目錄??????????0??2010-03-10?19:21??內部排序\Debug
?????目錄??????????0??2010-03-11?11:45??內部排序
-----------?---------??----------?-----??----
??????????????2096814????????????????????22
- 上一篇:QT后臺監控鼠標側鍵
- 下一篇:基于DirectShow的網絡視頻傳輸實現
評論
共有 條評論