當前位置:編程學習大全網 - 編程軟體 - c語言排序後刪除數組中重復的數字再排序輸出

c語言排序後刪除數組中重復的數字再排序輸出

#include<stdio.h>

#include<string.h>

#defineSIZE81

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);

}

擴展資料

刪除排序數組中的重復項註意事項

不要使用額外的數組空間,必須在原地修改輸入數組並在使用O(1)額外空間的條件下完成,意味著不能通過新建數組存放的方式解決。

可以考慮增加壹個遊標的方式(命名為:index),遍歷整個數組,當遇到前壹個和後壹個不相等的時候就給遊標自增,這樣的話對於相同的元素可以直接跳過不統計,最後返回”遊標的大小+1“(也即不重復的元素的個數)。

  • 上一篇:刀具長度補償指令
  • 下一篇:路由器固件 是什麽意思
  • copyright 2024編程學習大全網