Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
快速排序字符数组(字符串)C编程_C_Arrays_Character_Short - Fatal编程技术网

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

快速排序字符数组(字符串)C编程,c,arrays,character,short,C,Arrays,Character,Short,我有一个字符数组 char word[30]; 它保留了一个用户将输入的单词,我想对字母进行排序 例如,如果单词是“cat” 我想让它成为一个的“表演” 我认为这是一项相当简单的任务,但作为C编程的初学者,我发现互联网上的例子相当令人困惑 这是我尝试做冒泡排序的代码 还是不行 #include <stdio.h> #include<string.h> #define MAX_STRING_LEN 30 main() { char w1[30], w2[30]; 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
#包括
#包括
#定义最大字符串长度30
main()
{
字符w1[30],w2[30];
字符tempw1[30],tempw2[30];
int n,i,k;
焦炭温度;
printf(“给出第一个单词:”);
扫描频率(“%s”和w1);
printf(“给出第二个单词:”);
scanf(“%s”和&w2);
if(strlen(w1)=strlen(w2))/*检查单词的长度是否相同*/
{
strcpy(tempw1,w1);/*反拉菲到wi字符串sto tempw1*/
strcpy(tempw2,w2);/*反拉菲到w2字符串到tempw2*/
n=strlen(w1);
对于(i=1;ii+1;k--)
{
if(w1[k]
这是基本的编程知识,你自己解决它会帮自己一个忙

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

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
使用C标准库中的
qsort()

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

比较简单的排序算法之一是冒泡排序。好的,谢谢你的冒泡排序建议,我认为这只适用于整数!我马上试试,我正在做的程序是一个字谜游戏,作为练习,我已经解决了比较两个数组的所有其他部分,但需要先对它们进行排序以进行比较。@poseidon11 1。字符是整数。2.你可以想出一些算法,根据对象的属性来比较对象,否则就不会有通用的排序算法。这不是快速排序。哦——在重读之后,我猜他可能不是在寻找快速排序算法。。。只是“快速”的一种。哈哈,非常感谢你的帮助,我一整天都在尝试泡泡排序,但由于某种原因我没能做到,最后用qsort:D实现了