學習排序演算法時寫的,採用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,...