数据结构中的顺序存储
这里需要记住,数组类型固定,空间连续,长度固定。
搜索数组中是否有重复数据的思路
- 暴力搜索法 O(n^2) O(1)
- 计数法 O(n) O(n)
- 排序法 O(n) O(n)
- set map O(log2n) O(n)
- 交换法 O(n) O(1)
5.交换法
#include<stdio.h>
int IsSwap(int arr[],int nLength)
{
if(arr==NULL||nLength<=0)
return -1;
int i;
int j;
//遍历
for(i=0;i<nLength;)
{
//检测数据对应下标位置
if(arr[i]==i)
{
i++;
}
else
{
//检测当前元素作为索引位置
if(arr[i]==arr[arr[i]])
{
return 0;
}
else
{
j=arr[i];
//------------------
int t=0;
t=arr[j];
arr[j]=arr[i];
arr[i]=t;
//-----另一种交换----------
//arr[j]=arr[i]^arr[j];
//arr[i]=arr[i]^arr[j];
//arr[j]=arr[i]^arr[j];
}
}
}
return 1;
}
int main()
{
int arr[]={2,3,1,1,0,6,4};
int result=IsSwap(arr,sizeof(arr)/sizeof(arr[0]));
if(result==0)
printf("有重复的字符\n");
else
printf("没有重复的字符\n");
return 0;
}