C 的排序演算法以及隨機產生不重複數字的幾個Demo

2022-02-06 14:28:01 字數 2131 閱讀 5857

今天無意看到以前寫過的排序演算法,順便又想到隨機產生不重複數字的這樣乙個要求的demo(經常看到這樣一道題目:產生乙個int陣列,長度為100,並向其中隨機插入1-100,並且不能重複。),於是乎就寫了乙個,不借助於任何集合類,其思想無非就是排序演算法的逆向操作。另外順便把排序演算法也貼上出來。

class program

//int array = getrandomnum(100, 1000);

//foreach (int item in array)

////

console.writeline("排序後");

//array = sortshell(array);

//foreach (int item in array)

// console.readline();

}///

///隨機獲取數字

//////

獲取到的數字的個數

///獲取的數字的最大值

///static

int getrandomnum(int count, int max)

return array;

}///

///隨機產生不重複數字

//////

//////

static

int randomnotrepeatnum(int max, int min)

random random = new random();

for (int i = 0; i < count; i++)

return array;

}///

///氣泡排序:依次比較相鄰的兩個數,將小數放在前面,大數放在後面。程式設計複雜度低,穩定性。

//////

///static

int sortbubble(int sortarray)

int i, j = 1, temp;

bool done = false;

while (!done && j < sortarray.length)

}j++;

}return sortarray;

}///

///選擇排序:首先在未排序序列中找到最小元素,存放到排序序列的起始位置,

///然後,再從剩餘未排序元素中繼續尋找最小元素,然後放到排序序列末尾。

///以此類推,直到所有元素均排序完畢

//////

///static

int sortselection(int sortarray)

int i, j = 0, min, temp;

while (j < sortarray.length - 1)

}temp = sortarray[min];

sortarray[min] = sortarray[j];

sortarray[j] = temp;

j++;

}return sortarray;

}///

///插入排序:每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子檔案中的適當位置,

///直到全部記錄插入完成為止。

//////

///static

int sortinsert(int sortarray)

int i, j, temp;

for (i = 1; i < sortarray.length; i++)

sortarray[j] = temp;

}return sortarray;

}///

///希爾排序:將陣列列在乙個表中並對列排序(用插入排序)。

///重複這過程,不過每次用更長的列來進行。

///最後整個表就只有一列了,最後再進行插入排序。

//////

///static

int sortshell(int sortarray)

int inc;

for (inc = 1; inc <= sortarray.length / 9; inc = 3 * inc + 1) ;

for (; inc > 0; inc /= 3)

sortarray[j - 1] = t;}}

return sortarray;

}}

C 產生不重複的隨機數

方法1 思想是用乙個陣列來儲存索引號,先隨機生成乙個陣列位置,然後把這個位置的索引號取出來,並把最後乙個索引號複製到當前的陣列位置,然後使隨機數的上限減一,具體如 先把這100個數放在乙個陣列內,每次隨機取乙個位置 第一次是1 100,第二次是1 99,將該位置的數用最後的數代替。int index...

關於產生不重複隨機數的演算法

來自 方法1 去重法 這是最容易想到的方法,逐個產生這些隨機數,每產生乙個,都跟前面的隨機數比較,如果重複,就重新產生。這種方法效率比較低,且比較次數呈線性增長,越往後次數越多。方法2 篩選法 所謂 篩選法 就是根據要產生隨機數指定的範圍 起始數必須小於終止數 將這些數全部裝入乙個陣列,然後利用系統...

高效產生不重複的隨機數

purpose 生成隨機的不重複的測試資料 1000w資料量,要保證生成不重複的資料量,一般的程式沒有做到。但,本程式做到了。include include include include include include define size 10000000 int num size void ...