题目:给定 n 个排好序的数,要求,随机打乱这个 n 个数的顺序,使其无序排列。
假设 n = 100
算法实现如下:
// Test.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void SWAP(int* a,int* b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
int main(void)
{
int nums[100];
int i;
int j;
srand(time(NULL));
for (i = 0; i < 100; i ++) //生成有序序列
nums[i] = i;
for (i = 0; i < 100; i ++)
{
j = rand() % 100; // 生成随机要交换的数的下标
SWAP(&nums[i], &nums[j]); //洗牌,随机交换两个数的位置
}
for (i = 0; i < 100; i ++)
printf("%d ", nums[i]);
return 0;
}