删除数组中的相同数字
输入一组数字,存储在一维数组中,程序能够删除一维数组中所有相同的数,使之只剩一个,按照由大到小的顺序排列输出,并且输出数组中数据
的个数。
一、思路
首先,先将数组中的数字给从小到大排序
然后,再将数组中相同的数字给删除【我会给出两种方法】
【有了第一步后,这样比较容易删除】
二、代码实例
第一:先排序【为了简单我采用冒泡排序】
【不懂冒泡排序的请从我的博客中查找冒泡排序】
void InsertSort(int a[],int length){
int i,j;
int temp;
for(i=1;i<length;i++)
for(j=0;j<length-i;j++)
{
if(a[j]>a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
然后,我会开始从排好顺序的的数组中删除相同的数字
int fun(int *a,int n)
{
/*********Begin**********
int i=0, sentinel;
for(sentinel=0; i<n; sentinel++){
for(i=sentinel+1; i<n; i++){
if(a[i] > a[sentinel]){ //打成虚字的为第一种方法,下面的为第二种方法
a[sentinel+1] = a[i]; //第一种方法【打成虚字】这个比较受限。
break;
}
}
}
return sentinel;
********** End **********/
int i,k=0;
for(i=0;i<n;i++){
if(a[i+1]!=a[i]){
a[k]=a[i];
k++;
}
}
return k; //输出的是整合后的数组长度
}
总结
以上两种为这个问题的全部解题思路,如果你仔细阅读的话,很容易整合成一段完整的代码。如果你问我为什么不直接把代码全部直接再列出来?我想说的是,学习代码就要学会思考和重复训练。还是那句话,如果你要仔细阅读的话,很容易整合成一段完整的代码。
我希望阅读我代码的读者是每天都进步的,而不是直接从网上ctrl+c和ctrl+v来糊弄自己的。
最后祝阅读我博客的兄弟姐妹们,大家新年快乐。【哈哈,迟到的祝福】
祝大家代码水平节节升高。