24小时热门版块排行榜    

查看: 315  |  回复: 2
当前主题已经存档。
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

wanrong

铁虫 (小有名气)

[交流] 【求助】求助一算法程序

给一个字符数组{’c’,’a’,’d’,’e’,’b’,’h’}按字母表顺序排序,并输出排序前和排序后的结果。
      请教各位老师和同学,这个程序该如何编写,非常感谢您的帮助!
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

123935188

银虫 (小有名气)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
无奈的云(金币+1):谢谢热心解答! 2010-02-03 14:40
与数字的排序方法一样,把int类型改为char类型

以下是C语言权威《TheCProgrammingLanguage》中的例程,在这个例程中,对于数组v的left到right号元素以递增顺序排序。

intarr[]={14,10,11,5,6,15,0,15,16,14,0,8,17,15,7,19,17,1,18,7};

/*swap函数:交换v与v[j]的值*/
inlinevoidswap(intv[],inti,intj)
{
inttemp;

temp=v;
v=v[j];
v[j]=temp;
}

voidqsort(intv[],intleft,intright)
{
inti,last;
voidswap(intv[],inti,intj);

if(left>=right)/*若数组包含的元素个数少于两个*/
return;/*则不执行任何操作*/
swap(v,left,(left right)/2);/*将划分子集的元素*/
last=left;/*移动到v[0]*/
for(i=left 1;i<=right;i )/*划分子集*/
if(vswap(v, last,i);
swap(v,left,last);/*恢复划分的元素*/
qsort(v,left,last-1);
qsort(v,last 1,right);
}

intmain(){
qsort(arr,0,19);
inti;
for(i=0;i<=19;printf("%d",arr[i ]));
scanf("\n";
}
3楼2010-02-03 13:48:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 3 个回答

formleaf

木虫 (正式写手)

一个简单的排序算法,但效率不高

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
mgflyx_001(金币+1,VIP+0):谢谢热心帮助! 12-22 14:52
#include
using namespace std;
void csort(char *s,int n)
{
        char c;
        int t;
       
        for(int i=0; i         {
                c=s;
                for(int j=i+1; j                 {
                        if(s[j]                 }
                s[t]=s; s=c;
        }
}
int main()
{
    char s[]={'c','a','d','e','b','h','\0'};
   
    cout << s << endl;
    csort(s,6);
    cout << s << endl;
   
    return 0;
}
2楼2009-12-22 12:54:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见