c语言字符排序函数 c++语言字符串排序方法

C语言如何用自定义函数进行字符排序?

void fun(char a[])

创新互联公司长期为近1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为丛台企业提供专业的成都网站设计、做网站丛台网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。

{ int k=0,i,j;

char t;

while(a[k])

k++;//计算字符串长度

for(i=0;ik;i++)//冒泡排序

for(j=0;jk-1-i;j++)

if(a[j]a[j+1])

{t=a[j];

a[j]=a[j+1];

a[j+1]=t;}

}

c语言字符串排序

你有两个错误,一是C的变量定义必须在所有语句之前,二是字符串不能赋值,必须使用strcpy函数,修改后的程序代码和运行结果如下:

$ cat a.c

#includestdio.h

#includestring.h

void Solve();

void sort(char *name[], int n);

int main()

{

Solve();

return 0;

}

void Solve()

{

int i,n;

char name[100][100];

scanf("%d",n);

for(i=0;in;i++)

{

gets(name[i]);

}

sort(name,n);

for(i=0;in;i++)

{

puts(name[i]);

}

}

void sort(char *name[100], int n)

{

int i,j,k;

char *temp;

for(i=0;in-1;i++)

{

k=i;

for(j=i+1;jn;j++) if(strcmp(name[k],name[j])0) k=j;

if (k!=i)

{

{

strcpy(temp,name[i]);

strcpy(name[i],name[k]);

strcpy(name[k],temp);

}

}

}

}

$ cc a.c

"a.c", line 19: warning #2167-D: argument of type "char (*)[100]" is

incompatible with parameter of type "char **"

sort(name,n);

^

$ a.out

6dkjlfhgjkshdfjkgh

1kdfghj

3dkjfhghd

2dlkfjgklj

5ldfkhlkj

4dflkghklj

1kdfghj

3dkjfhghd

2dlkfjgklj

5ldfkhlkj

4dflkghklj

$ cc -V

cc: HP C/aC++ B3910B A.06.25 [Nov 30 2009]

/cq/u/cqjsdba/ygb

C语言字符串快速排序函数

#include stdio.h

#includestdlib.h

#includestring.h

int comp(char *a,char *b)

{

while(*a==*b*a*b){a++;b++;}

return (int)*a-(int)*b;

}

int main(void)

{

char s[1000][20];

int i,n;

scanf("%d\n",n);

for(i=0;in;i++)

gets(s[i]);

qsort(s,n,sizeof(s[0]),comp);

printf("\n");

for(i=0;in;i++)

puts(s[i]);

system("pause");

return 0;

}

c语言字符排序

c语言字符排序:

输入:abc 输出:abc acb bac bca cab cba

#includestdio.h

#includestdlib.h

#includestring.h

void mySwap(char *a,char *b)

{

char temp;

temp = *a;

*a = *b;

*b = temp;

}

void PaiLie(char *list,int begin,int end)

{

int i;

if(list == NULL)

return;

if(begin == end)

{

printf("%s ",list);

printf("\n");

}else{

for(i = begin ; i=end ;i++)

{

mySwap(list[i],list[begin]);

PaiLie(list,begin+1,end);

mySwap(list[i],list[begin]);

}

}

}

void main()

{

char list[] = "abc";

char out [4];

PaiLie(list,0,2);

//ZuHe(list,out,3,0,0);

}

如果有重复,去掉重复的,然后满足一些特定的要求(如:第3个位置不可以是4,3和5不可以相邻)

Java实现。

此方法需要输入数字从小到大排列,若不是只需在排列之前预处理一下即可。

关键是compareTo方法

[java] view plain copy

package dataStruct;

import java.util.LinkedList;

import java.util.List;

public class PaiLie {

private static ListString result = new LinkedListString();

private static String lastResult = "";

public static void main(String[] args) {

String s = "1223";

char[] c = s.toCharArray();

paiLie(c, 0, c.length - 1);

for (int i = 0; i result.size(); i++)

System.out.println(result.get(i));

}

public static boolean validator(String s) {

if (s.compareTo(lastResult) = 0) //去重复的关键

return false;

if (s.charAt(2) == '4')

return false;

if (s.indexOf("35") = 0)

return false;

if (s.indexOf("53") = 0)

return false;

return true;

}

public static void paiLie(char[] c, int begin, int end) {

if (begin == end) {

String s = new String(c);

if (validator(s)) {

lastResult = s;

result.add(s);

}

}

for (int i = begin; i = end; i++) {

swap(c, begin, i);

paiLie(c, begin + 1, end);

swap(c, begin, i);

}

}

public static void swap(char[] c, int i, int j) {

char temp;

temp = c[i];

c[i] = c[j];

c[j] = temp;

}

}


名称栏目:c语言字符排序函数 c++语言字符串排序方法
当前链接:http://pwwzsj.com/article/doddijp.html