#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<time.h>
void Init(int* p,int m)
{
assert(p != 0);
srand(time(nullptr));
for (int i = 0; i < m; i++)
{
p[i] = rand() % 100 + 1;
}
}
void uncopyA(int *p,int m)
{
int i = 0;
while (i<m)
{
int a = rand() % 100+1 ;
if (p[a-1] == 0)
{
p[a-1] =a;
i++;
}
}
}
int FindValue(int* p, int n, int value)
{
assert(p!=nullptr);
int pos = -1;
for (int i = 0; i < n; i++)
{
if (value == p[i])
{
pos = i;
break;
}
}
return pos;
}
void uncopyB(int* p, int m)//缺点:越往后面时间复杂度越高
{
assert(p!=nullptr);
int i = 0;
while (i < m)
{
int a = rand() % 100 + 1;
if (FindValue(p, i, a) ==-1)
{
p[i] = a;
++i;
}
}
}
void Print(int *p,int m)
{
assert(p != 0);
for (int i = 0; i < m; i++)
{
printf("%d\t",p[i]);
if ((i + 1) % 10 == 0) printf("\n");
}
printf("\n");
}
void Swap(int* ap, int* bp)
{
assert(ap!=0&&bp!=0);
int c = *ap;
*ap = *bp;
*bp =c;
}
void BobbleSort(int* p,int m)
{
assert(p != nullptr);
for (int i = 0; i < m-1; i++)
{
bool tag = true;
for (int j = 0; j <m-i-1 ; j++)
{
if (p[j]>p[j + 1])
{
Swap(&p[j], &p[j+ 1]);
tag = false;
}
}
if (tag) break;
}
}
int main()
{
const int m =100;
int ch[m] = {0};
int a[5] = {4,3,2,5,1};
//Init(ch,m);
//uncopyA(ch, m);//一维数组查表方案来避免重复分配数字
uncopyB(ch, m);//通过一个写一个查询函数来判断产生的随机数数组中是否已经出现;
BobbleSort(ch, m);//冒泡排序函数的调用
Print(ch,m);
/*BobbleSort(a,5);
Print(a, 5);*/
printf("%d",FindValue(ch,m,56));//查询数组中元素下标的函数;
return 0;
}
#include<stdio.h>
void Right_Move_Arry(int* p, int n)
{
int b = p[0];
for(int i=n-1;i>=0;i--)
{
p[(i + 1) % n] = p[i];
if (i == 0)
{
p[(i + 1) % n] = b;
}
}
}
void Right_Move_Arryk(int* p,int n, int k)
{
for (int i = 0; i < k; i++)
{
int b = p[0];
for (int i = n - 1; i >= 0; i--)
{
p[(i + 1) % n] = p[i];
if (i == 0)
{
p[(i + 1) % n] = b;
}
}
}
}
int main()
{
int n = 5;
int Ar[5] = { 1,2,3,4,5 };
//Right_Move_Arry(Ar,5);
Right_Move_Arry(Ar, n,1);
for (int i = 0; i < n; i++)
{
printf("%d ",Ar[i]);
}
return 0;
}