#include <stdio.h> // 升序
数组srcvoid sort(int *src, int len){ int tem for (int i = 0 i < len i++) { for (int j = 0 j < len - i - 1 j++) if (src[j] > src[j+1]) { tem = src[j] src[j] = src[j+1] src[j+1] = tem } }} int main(){ int num[10] = {0, 2, 5, 1, 1, 5, 4, 9, 2, 1}, d int i = 0, cnt sort(num, 10) // 排序 d = num[0] for (i = 1 i < 10 i++) // 遍历比较 { if (num[i] != d) { printf("%d ", d) d = num[i] } } if (num[9] == d) printf("%d\n", d) return 0}
利用双重循环,将每个值依次与其后面的值相比较,如果有相同的则删除该元素即可。
删除时,可以使用将后面元素依次向前移动一位,同时总长度减一的方式。
参考代码如下:
int remove_repeat(int *a, int l)
{
int i, j, k
for(i = 0 i < l i ++)
{
for(j = i+1 j <l j ++)//对后面每个元素比较,去重。
{
if(a[j] == a[i])//发现重复元素。
{
for(k = j+1 k<l k ++)//依次前移一位。
a[k-1] = a[k]
l--//总长度减一。
}
}
}
return l//返回新的长度值。
}
评论列表(0条)