快速排序字符数组(字符串)C编程



我有一个字符数组

char word[30]; 

它保留了一个用户将要输入的单词,我想对字母进行排序例如,如果单词是"cat"我想让它成为"表演"我想这是一项相当容易的任务,但作为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

使用C标准库中的qsort()

int compare(const void *a, const void *b)
{
    return *(const char *)a - *(const char *)b;
}
char arr[] = "dbaurjvgeofx";
printf("Unsorted: %sn", arr);
qsort(arr, strlen(arr), 1, compare);
printf("Sorted: %sn", arr);

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

话虽如此,这里有一个快速的伪

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

最新更新