2013-02-16 60 views
0

我有一个字符数组快速排序的字符(串)C编程的一个数组

char word[30]; 

,保持一个字,用户将输入和我想要的字母 例如排序,如果这个词是“cat” 我想让它变成“act” 我认为这是一项相当简单的任务,但作为C编程的初学者,我发现互联网上的例子相当混乱。

这是我的代码试图做冒泡排序...

还不行

#include <stdio.h> 
#include<string.h> 

#define MAX_STRING_LEN 30 

main() 
{ 
char w1[30], w2[30]; 
char tempw1[30], tempw2[30]; 
int n,i,k; 
char temp; 
    printf("Give the first word: "); 
    scanf("%s",&w1); 
    printf("Give the second word: "); 
    scanf("%s",&w2); 
     if(strlen(w1)==strlen(w2)) /* checks if words has the same length */ 
      { 
      strcpy(tempw1,w1); /*antigrafei to wi string sto tempw1 */ 
      strcpy(tempw2,w2); /*antigrafei to w2 string sto tempw2 */ 
      n=strlen(w1); 


      for (i=1; i<n-1; i++) 
       { 
           for (k=n;k>i+1;k--) 
        { 
         if (w1[k] < w1[k-1]) 
          { 
           temp=w1[k-1]; 
           w1[k-1]=w1[k]; 
           w1[k]=temp; 
          } 
        } 
      } 
      for (i=1; i<n-1; i++) 
       { 
           for (k=n;k>i+1;k--) 
        { 
         if (w2[k] < w2[k-1]) 
          { 
           temp=w2[k-1]; 
           w2[k-1]=w2[k]; 
           w2[k]=temp; 
          } 
        } 
       } 
      printf("%s \n",tempw1); 
      printf("%s \n",w1); 
      printf("%s \n",tempw2); 
      printf("%s \n",w2); 
      /* call qsort */ 
      /* call compare */ 
      } 
     else printf(" \n H lexh %s den einai anagrammatismos tis lexhs %s",w1,w2); 
    return 0;St 
+0

的容易排序算法之一是冒泡排序。 – dutt 2013-02-16 14:11:29

+0

好的,谢谢你的气泡排序建议我认为这只会在整数工作!我试图马上尝试它,我试图工作的程序是一个字典游戏作为excersise我已经解决了所有其他部分,我比较这两个数组,但需要先对它们进行排序来比较。 – poseidon11 2013-02-16 14:19:17

+0

@ poseidon11 1.字符**是**整数。 2.你可以想出一些算法来比较基于它们属性的对象,否则就不会有通用的排序算法。 – 2013-02-16 14:22:01

回答

1

这是基本的编程知识,你会被解决它做你自己一个忙自己..

话虽这么说,这里有一个快速伪

for i is equal to 1 to length of array 
    for k is equal to i to length of array 
    if i > k 
    temp = i 
    i = k 
    k = temp 
    endif 
    endfor 
endfor 
+2

这不是快速排序。哦 - 重读之后,我想也许他不是在寻找快速排序算法......只是一种“快速”排序。大声笑。 – 2013-02-16 14:34:03

+0

非常感谢帮助我尝试了整天泡泡排序,但我无法完成它,因为某种原因,finaly把它和qsort一起工作:D – poseidon11 2013-02-17 11:43:19

9

使用qsort()从C标准库:

int compare(const void *a, const void *b) 
{ 
    return *(const char *)a - *(const char *)b; 
} 

char arr[] = "dbaurjvgeofx"; 

printf("Unsorted: %s\n", arr); 
qsort(arr, strlen(arr), 1, compare); 
printf("Sorted: %s\n", arr); 
+0

非常感谢你的帮助! – poseidon11 2013-02-17 11:43:37