一路面试题,大家看看
一道面试题,大家看看
有一个整型数组int[100],把1-100随机放到这个数组里,数字不能重复,怎样能完成要求。
------解决方案--------------------
线性时间。
------解决方案--------------------
洗牌算法还有这么多讲究啊!这个不错!
http://developer.51cto.com/art/201210/360722.htm
------解决方案--------------------
coolshell测试过的效率还不错的一个算法
有一个整型数组int[100],把1-100随机放到这个数组里,数字不能重复,怎样能完成要求。
------解决方案--------------------
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SWAP(a,b) {int tmp = a; a = b; b = tmp;}
int main(void)
{
int a[100];
int i;
int j;
srand(time(NULL));
for (i = 0; i < 100; i ++)
a[i] = i;
for (i = 0; i < 100; i ++)
{
j = rand() % 100;
SWAP(a[i], a[j])
}
for (i = 0; i < 100; i ++)
printf("%d ", a[i]);
return 0;
}
线性时间。
------解决方案--------------------
洗牌算法还有这么多讲究啊!这个不错!
http://developer.51cto.com/art/201210/360722.htm
------解决方案--------------------
coolshell测试过的效率还不错的一个算法
void Shuffle(int* arr,n)
{
int index;
if(n==0)
return;
else
while(n--){
index=rand()%n;
swap(arr[n],arr[index]);
}
}
void Swap(int& a, int& b){
a=a+b;
b=a-b;
a=a-b;
}