1 定義一個輔助數組,和原本數組中總數相同。
創(chuàng)新互聯(lián)是一家業(yè)務范圍包括IDC托管業(yè)務,雅安服務器托管、主機租用、主機托管,四川、重慶、廣東電信服務器租用,四川主機托管,成都網通服務器托管,成都服務器租用,業(yè)務范圍遍及中國大陸、港澳臺以及歐美等多個國家及地區(qū)的互聯(lián)網數據服務公司。
2 對輔助數組進行隨機賦值。
3 對輔助數組進行排序,交換數據時,同時交換源數組中的相同位置。
4 當輔助數組有序后,源數組已經完成隨機排序。
代碼如下:
void?radom_sort(int?*a,?int?l)
{
int?*b;
int?i,j,t;
b?=?(int*)malloc(sizeof(int)*l);
srand(time(NULL));
for(i?=?0;?i??l;?i?++)
b[i]?=?rand();
for(i?=?0;?i??l-1;?i?++)
for(j?=?i?+?1;?j??l;?j?++)
{
if(b[i]b[j])
{
t?=?b[i];
b[i]?=?b[j];
b[j]?=?t;
t?=?a[i];
a[i]?=?a[j];
a[j]?=?t;
}
}
}
可以用一個輔助數組進行隨機排序,方法如下:
1 獲取要排序的數組長度L。
2 定義整型的輔助數組,長度為L。
3 生成L個隨機整型數字,存與輔助數組中,這樣要排序數組和輔助數組就是一一對應的了。
4 對輔助數組排序,排序過程中,當改變輔助數組中數字的位置時,同步改變要隨機排序的原數組中對應的元素位置。比如為排序交換輔助數組的第三個和第五個元素,那么就要同時交換原數組中的第三個和第五個元素。
5 當輔助數組排序完成后,原數組中的值就是隨機順序了。
6 刪除輔助數組。
#include
#include
#include
intmain()
{
inti,j,n,k,t,a[100];
srand((unsigned)time(NULL));
p
利用rand()函數產生隨機數字,rand()%n產生小于n的隨機數,然后交換。
運行的結果:
#include
#include
intmain()
{
intnbs
利用rand()函數產生隨機數字,rand()%n產生小于n的隨機數,然后交換。
擴展資料
C語言排序法
在一層循環(huán)找出最小數的下標,該下標用min保存,直到比較完整個數組,即可找到最小的數,然后將該數放入數組的第一位。
這樣只能排好一個元素,于是需要再嵌套一層外層循環(huán)即可排好所有元素。第二次循環(huán)就不用再比較第一個元素了,因為第一個元素已經排好,依次類推,每一次循環(huán)就會排好一個,進行n-1次循環(huán)即可排好所有元素。
你指的隨機函數每次產生的長度都不一樣是產生的隨機數位數不一樣吧,那是肯定的,而且他肯定在1~20000范圍內。至于第二個問題是你輸出的問題,time_t是long型的,你用float型輸出肯定是0,應改為printf("t=%dms\n",t);
分享標題:c語言中隨機排序函數 c語言如何生成隨機數并排序輸出
網站URL:http://www.chinadenli.net/article8/dddsgop.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供虛擬主機、企業(yè)建站、網站改版、移動網站建設、營銷型網站建設、ChatGPT
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)