1、100个随机数进行冒泡排序
void Swap_Int(int* x, int* y)
{
int tmp = *y;
*y = *x;
*x = tmp;
}
void BubbleSort(int* ar, int n)
{
assert(ar != nullptr && n > 1);
for (int i = 0; i < n - 1; ++i)
{
bool tag = true;
for (int j = 0; j < n - 1 - i; ++j)
{
if (ar[j] > ar[j + 1])
{
Swap_Int(&ar[j], &ar[j + 1]);
tag = false;
}
}
if (tag)
{
break;
}
}
}
2、输入100个不相等随机数(临时数组标记)
void Output(int ar[100], int n)
{
for (int i = 0; i < 100; ++i)
{
printf("%-5d", ar[i]);
if ((i + 1) % 10 == 0)
{
printf("\n");
}
}
}
void Init_Ar(int* ar, int n)
{
int i = 0;
int tmp = 0;
int table[101] = { 0 };
while (i < n)
{
tmp = rand() % 100 + 1;
if (0 == table[tmp])
{
table[tmp] = 1;
ar[i] = tmp;
++i;
}
}
}
int main()
{
const int n = 100;
int ar[n] = { 0 };
Init_Ar(ar, n);
Output(ar, n);
return 0;
}
在函数Init_Ar中,新建一个比目标数组的元素个数多一个的临时数组,初始化全为0。开始赋值时,先在临时数组中查找对应位置是否为0(0 == table[tmp]),如果为0,则把此数据赋值进目标数组,同时临时数组对应位置+1,表示此数据已经使用过了。
如果不为0,则表示目标数组中已经有这个数据了,需要从新输入一个随机数。
3、输入100个不相等的随机数(挨个查找)
void Output(int ar[100], int n)
{
for (int i = 0; i < 100; ++i)
{
printf("%-5d", ar[i]);
if ((i + 1) % 10 == 0)
{
printf("\n");
}
}
}
int FindValue(int *ar, int n, int tmp)
{
int i = n-1;
while (i >= 0 && ar[i] != tmp)
{
--i;
}
return i;
}
void Init_Ar(int ar[100], int n)
{
int i = 0;
while (i < n)
{
int tmp = rand() % n + 1;
int pos = FindValue(ar, i, tmp);
if (-1 == pos)
{
ar[i] = tmp;
++i;
}
}
}
int main()
{
const int n = 100;
int ar[n] = {};
Init_Ar(ar, n);
Output(ar, n);
return 0;
}
输入一个随机数,然后让随机数与目标数组中已有的数据进行比较,如果有相同的数据,则重新输入;如果没有,则把这个数输入到目标数组中。