生活随笔
收集整理的這篇文章主要介紹了
9-基数排序C实现(待补充插图)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、
主函數:void Buc_Sort(int* head,int low,int high)
參數解釋
head:數組指針
[low, high]:需排序的數組范圍
說明
創建一個Radix[L+1][10]數組來存儲數據
Radix第0行第j列存儲的信息為當前列中未被使用的行,可用于存儲下一個數據
Radix第1行到第L行用于儲存數據
#include <stdio.h>
#include <time.h>
#include <math.h>void Buc_Sort(int* head
,int low
,int high
){int L
=high
-low
+1;int temp
=low
,i
=low
+1;while(i
<=high
){if(head
[i
]>head
[temp
]){temp
=i
;}i
++;}int Deep
=1;while(pow(10,Deep
)<head
[temp
]){Deep
++;}int Radix
[L
+1][10];int flag
=1;int temp1
,temp2
;while(flag
<=Deep
){for(int j
=0;j
<10;j
++){Radix
[0][j
]=1;}for(int i1
=1;i1
<L
+1;i1
++){for(int j1
=0;j1
<10;j1
++){Radix
[i1
][j1
]=-1;}}i
=0;while(i
<=high
){temp2
=(head
[i
]%((int)pow(10,flag
)))/(int)pow(10,flag
-1);Radix
[Radix
[0][temp2
]][temp2
]=head
[i
];Radix
[0][temp2
]++;i
++;}temp1
=0;for(int j11
=0;j11
<10;j11
++){for(int i11
=1;i11
<L
+1;i11
++){if(Radix
[i11
][j11
]!=-1){head
[temp1
]=Radix
[i11
][j11
];printf("\n#####%d\n",Radix
[i11
][j11
]);temp1
++;}}}flag
++;printf("\n##################\n");}
}int main(int argc
, char **argv
) {int r
[11][10];printf("Hello, World!\n");int s
[5];s
[0]=653;s
[1]=375;s
[2]=497;s
[3]=399;s
[4]=129;int i
=0;while(i
<5)printf("%d ",s
[i
++]);printf("\n---------\n");Buc_Sort(s
,0,4);int j
=0;while(j
<5)printf("%d ",s
[j
++]);return 0;
}
總結
以上是生活随笔為你收集整理的9-基数排序C实现(待补充插图)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。