c语言排序后删除数组中重复的数字再排序输出

 时间:2024-10-14 05:12:55

#include<stdio.h>

#include<string.h>

#defi荏鱿胫协neSIZE81

voiddelete_repeat(char*str);

voidbubble_sort(char*str);

intmain()

{

charstr[SIZE];

gets(str);

delete_repeat(str);

bubble_sort(str);

puts(str);

return0;

}

//删除重复字符

voiddelete_repeat(char*str)

{

/**判断数组内第i个字符是否与前i-1个字符存在重复:

若重复,删除该字符,i之后的字符下标均减1,后重新判断新的第i个字符

若不重复,不做处理,继续遍历下一个

*/

for(inti=1;str[i]!='\0';i++){

for(intj=0;j<i;j++)

{

if(str[i]==str[j])

{

for(intk=i;k<strlen(str)-1;k++)

{

str[k]=str[k+1];

}

str[strlen(str)-1]='\0';

i--;

}

}

}

}

//冒泡排序

voidbubble_sort(char*str)

{

intswap;

chartemp;

intk=strlen(str);

do{

swap=0;

for(inti=0;i<k-1;i++){

if(str[i]>str[i+1])

{

swap=1;

temp=str[i];

str[i]=str[i+1];

str[i+1]=temp;

}

}

k--;

}while(k>0&&swap);

}

c语言排序后删除数组中重复的数字再排序输出

扩展资料

删除排序数组中的重复项注意事项

不要使用额外的数组空间,必须在原地修改输入数组并在使用O(1)额外空间的条件下完成,意味着不能通过新建数组存放的方式解决。

可以考虑增加一个游标的方式(命名为:index),遍历整个数组,当遇到前一个和后一个不相等的时候就给游标自增,这样的话对于相同的元素可以直接跳过不统计,最后返回”游标的大小+1“(也即不重复的元素的个数)。

  • python中图形化的操作
  • 旋度与散度在表示源的强度时有什么不同
  • c语言中gets在子函数中如何用
  • 如何使用C语言的声明语句
  • 怎样画卡诺图
  • 热门搜索
    党史国史手抄报 交通手抄报内容 爱护公物手抄报 保护牙齿手抄报 国庆节手抄报一等奖 小手拉大手手抄报 关于马的手抄报 关于长城的手抄报 抗病毒手抄报 田园风光手抄报