排序演算法(帶完整注釋)

2021-07-16 05:27:44 字數 2599 閱讀 3832

學習排序演算法時寫的,採用c實現,缺陷在於沒有對演算法複雜度和時間執行進行分析~不過**很用心注釋了的,歡迎指正。

//排序演算法

#include #include #include int main()

printf ("所取排序隨機數個數 n=");

scanf ("%d", &n);

printf ("測試取整數範圍 c=");

scanf ("%d", &c);

printf("\n");

n=n-1;

int *arr = (int *)malloc(sizeof(int) * n);

srand (time (0));

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

printf ("隨機生成數值為0~%d的陣列...\n",c);

printf ("初始化陣列: ");

print_arry(arr, n);

printf ("排序後的陣列:");

switch(way)

print_arry(arr, n);

return 0;

system ("pause");}

//氣泡排序:

void bubblingsort(int a,int n)}}

} //直接插入排序:

void insertsort(int a,int n) //1、傳入陣列a和其長度n

} t=a[i];

a[i]=a[d]; //3、通過交換位置,使最小值換到未排序序列首位。

a[d]=t;

} }

//歸併排序:

int sort(int a,int head, int mid,int tail) //1、傳遞待排序列a、序列a的起始下標head、分段中點mid、 末尾下標tail

; //2、暫設臨時陣列(最好用申請記憶體malloc合理分配空間,此處僅供測驗)

for(i=head,j=mid+1,k=head;k<=tail;) //3、待排序列被mid分為兩段,i、j分別為一段的起始點,開始排序

if(j==tail+1) // 5、同上一注釋

if(i<=mid&&j<=tail) //6、(排序第一步必從這裡開始時)此時條件下, 比較a[i]的a[j]的大小,小的便放到臨時陣列temp,然後下標自加 1 ,程式迴圈,完成序列a的排序。

//可以看出歸併排序是從最底層往上排。

sort(a,head,mid,tail); }

//快速排序:

void quicksort(int a,int head,int tail) //1、傳入待排序陣列a,陣列a首個數值下標head,末尾數值下標tail。

}if(key>i) //7、key>i,說明key需要從i往後搜尋。

for(int i=len;i>=0;i--)

free(count);

free(sort);

} //基數排序:

void radixsort(int a, int n) // 1、呼叫排序函式,每一次移位,從低到高進行排序。最後得到最終的正確序列

} void sort(int a,int n,int d) // 2、 傳遞進待排序陣列a、 陣列長度、需要排序的基數字

; int *ip = (int *)malloc(n * sizeof (int));

int *bp = (int *)malloc(n * sizeof(int));

int getdvalue(int value, int d);

for (i = 0; i <=n; i++) //3、呼叫getdvalue,取得陣列a的值的第d位數字,存入陣列k[i]中

for (j = 1; j < maxk; j++) //4、對陣列k進行累加

for (i = n; i >= 0; i--) // 5、每一次,我們以ip[i]為k下標,取得k的值 ,然後讓k-1的值作為bp的下標,

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

free(ip);

free(bp);

} int getdvalue(int value, int d) //獲取乙個數第d位數的值,位數索引從0開始

return value % maxk;

} //希爾排序,詳情參照歸併遞迴思想,和直接插入排序注釋。

void hillsort(int a,int head,int tail)

insertsort(a,tail);

} void print_arry(int *a,int n)

printf("\n");

}

完整版 時間限制登入 帶注釋

string str string.empty int errorcount 0 private void btn login click object sender,eventargs e 獲得連線字串 str configurationmanager.connectionstrings ctrc...

Spring完整配置檔案帶注釋 自動掃包

xmlns xsi xmlns p xmlns aop xmlns tx xmlns context xsi schemalocation spring beans 3.0.xsd spring aop 3.0.xsd spring tx 3.0.xsd spring context 3.0.xsd...

詳細注釋 帶哨兵的歸併排序merge函式

歸併排序和快排都是遞迴演算法,但是難點不在遞迴,而在merge合併函式和partition分割槽函式。所以就只分析merge函式就可以了。用哨兵比不用哨兵的 簡潔而且更好理解,所以就不解釋不帶哨兵的合併函式了。帶哨兵的歸併 public void mergewithsentinal int arr,...