//删除数组相同的元素
//舍伍德生成随机数算法
//快速排序
#include<stdio.h>
#include<stdlib.h>
int Random(int a,int b)//产生随机数
{
return rand()%(b-a)+a;
}
void qqsort(int a[],int low,int high)
{
int i,j,x,k,temp;
if(low<high)
{
i=low;
j=high;
k=Random(i,j);
if(k!=low)
{
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
x=a[i];
while(i<j)
{
while(i<j &&x<a[j]) j--;
if(i<j)
{
a[i]=a[j];
i++;
}
while(i<j && x>a[i]) i++;
if(i<j)
{
a[j]=a[i];
j--;
}
}
a[i]=x;
qqsort(a,low,i-1);
qqsort(a,i+1,high);
}
}
void display(int a[],int n)
{
for(int i=0;i<=n;i++)
printf("%d ",a[i]);
printf("/n");
}
//删除相同的元素
void delsame(int a[],int n)
{
int k=0,j=1;
for( int i=0;i<=n;i++)
{
if(a[k]!=a[j])
{
a[++k]=a[j];
}
j++;
}
}
int main()
{
int a[]={2,4,3,2,3,4,8,0,6,7,8,1};
int high=11;
int low=0;
qqsort(a,low,high);
display(a,high);
delsame(a,high);
display(a,high);
return 0;
}
删除数组中相同的元素 算法复杂度 O(nlogn)
最新推荐文章于 2023-04-19 20:32:40 发布