原地随机排列数组
在循環中,隨機選擇一個地址,跟目前的地址進行交換,達到排序的目的:
<span style="font-size:18px;">#include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <time.h>void PrintArr(int *pnArr, int nLen) {for (int i = 0; i < nLen; i++){printf("%d ", pnArr[i]);}printf("\n"); }void Swap(int *p, int *q) {int nTmp = *p;*p = *q;*q = nTmp; }void RandomSort(int *pnArr, int nLen) {srand(time(NULL));for (int i = 0; i < nLen; i++){int nIndex = rand()%nLen;//隨機產生的一個地址Swap(&pnArr[i], &pnArr[nIndex]);//當前的地址跟隨機的地址的值進行交換} }int main() {int nArr[10] = {1,2,3,4,5,6,7,8,9,10};PrintArr(nArr, 10);RandomSort(nArr, 10);PrintArr(nArr, 10);system("pause");return 0; }</span>總結