用双指针和冒泡排序法处理数组重复数(删除并返回新数组长度)-------c语言
程序员文章站
2024-03-17 15:56:10
...
(1)冒泡排序法:
#include<stdio.h>
#define max_size 100
int main()
{
int nums[max_size];
int e,n;
for(int i=0;i<n;i++)
{
scanf("%d",&nums[i]);
}
for(int j=0;j<n;j++)
{
for(int m=0;m<n;m++)
{
if(nums[j]==nums[j+1])
{
for(int k=j;k<=n;k++)
{
e=nums[k];
nums[k]=nums[k+1];
nums[k+1]=e;
}
n--;
}
}
}
printf("%d\n",n);
for(int l=0;l<n;l++)
{
printf("%-2d",nums[l]);
}
return 0;
}
(2)双指针:
#include<stdio.h>
#define MAX_SiZE 100
int change(int nums[],int n)
{
int *left,*right;
int m;
left=nums;
right=nums;
for(int k=0;k<n;k++)
{
right++;
if(*right!=*left)
{
left++;
*left=*right;
m++;
}
}
return m;
}
int main()
{
int n,lengeth;
int nums[MAX_SiZE];
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&nums[i]);
lengeth=change(nums,n);
printf("%d\n",lengeth);
for(int j=0;j<lengeth;j++)
printf("%-2d",nums[j]);
return 0;
}
上一篇: PHP查找算法之二分查找(折半查找)
下一篇: PHP算法之二分查找