概述
(一)产生使用冒泡法解决一切问题
这里明显有两个问题1)数组去重,2)排序
排序当然想到冒泡,快速排序等等方法。
原本打算在冒泡循环中倘若一遇见相等就令其中前一个等于0这样在排序的时候也可以完成去重。
include<stdio.h>
int main() {
int n,i=0,t=0,m;
scanf("%dn", &n);
int a[1000] = {0};
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
for (t = 0; t < n-1; t++) {
for (i = 0; i<(n-1-t); i++) {
if (a[i] == a[i + 1]) {
a[i] = 0;
}
if (a[i] > a[i+1]);
{m = a[i]; a[i] = a[i + 1]; a[i + 1] = m; }
}
}
for (i = 0; i < n; i++) {
if (a[i] != 0) {
printf("%d ",a[i]);
}
}
return 0;
}
(原本使用函数,我改成一段比较好看一点)
但是发现无法得出正确答案只是出现去重实现了,排序只排了一部分的序。至于问题在哪一直没找到。知道的 兄弟就帮我纠出问题!!!
(二)
题目限制的数字大小为1<=x<=1000,此时设置的数组也设这么大的话,那么我们存到数组里面的所有数字都由小到大的排好了位子,则我们需要借助数组本身的数字大小完成排序。
与此同时,如果这样的话,重复的数字也会被重复而抵消掉。然后其他空的位置都是被赋予0,那么输出的时候就只输出有数字的数组。
int main()
{
int n = 0;
int arr[1001] = {0};
int tmp = 0;
scanf("%dn",&n);
int i = 0;
for(i=0;i<n;i++)
{
scanf("%d",&tmp);
arr[tmp] = tmp;
}
for(i=0;i<1001;i++)
{
if(arr[i] != 0)
printf("%d ",i);
}
return 0;
}
如图,奇妙的很!!!!!!!!!!
继续努力学习
最后
以上就是背后荔枝为你收集整理的12.28数组去重并排序(c语言)的全部内容,希望文章能够帮你解决12.28数组去重并排序(c语言)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复