c/c++语言开发共享冒泡排序Carrays交换

当我到达此代码的交换部分时,我最近遇到了这个问题,所以这段代码的作用是输入一个数组并使用冒泡排序方法对其进行排序。 读取此内容的文本文件有10个数字和名称。 像这样:

约翰1
马克2
马太福音2
路加福音3
伊萨克4
凯恩5
瑞恩7
亚伯2
亚当9
夏娃10

但是当它打印出来时,它会显示:

约翰1
马克2
马太福音2
亚伯2
亚伯3
亚伯4
亚伯5
亚伯7
亚当9
夏娃10
对不起,问题是为什么它会重复Abel,我该怎么做才能解决它?

void bubbleSort (Word q){ int last = 9; int Swapped = 1; int i = 0; int m = 0; char* temp = "Hello"; printf("Temp is: %s n", temp); int tempA; while (Swapped == 1){ Swapped = 0; i = 1; while (i  q.data[i+1]) { printf("Hello: %d n", i); //Copy Name of Element temp = q.name[i]; strcpy(q.name[i], q.name[i+1]); strcpy(q.name[i+1] , temp); //Copy Data of corresponding element tempA = q.data[i]; q.data[i] = q.data[i+1]; q.data[i+1] = tempA; Swapped = 1; } i = i + 1; } last = last - 1; } last = 9; while (m <= last){ printf("Name: %s, Data: %d n", q.name[m], q.data[m]); m++; } } 

    而不是这个:

     char* temp = "Hello"; 

    你应该这样做:

     char *temp = malloc(MAX_NAME_LEN*sizeof(char)); //check if allocation of memory was successful or handle exceptions 

    或这个:

     char temp[MAX_NAME_LEN]; 

    然后

     strcpy(temp, "Hello"); 

    您需要将字符串存储到临时变量,指向实际内存,以便在代码的后续部分中在字符串交换操作中使用它。

    而不是这个:

      //Copy Name of Element temp = q.name[i];//HERE you are storing a pointer to the address, not the actual string. Both q.name[i] and temp point to the same memory strcpy(q.name[i], q.name[i+1]);//Both q.name[i] and the temp pointer, with the string at q.name[i+1]. the original string in q.name[i] is lost. strcpy(q.name[i+1] , temp);//You are copying the same content as in q.name[i+1]. You are not copying the original content of q.name[i] 

    做这个:

     //Copy Name of Element strcpy(temp, q.name[i]);//HERE you are storing the actual string strcpy(q.name[i], q.name[i+1]);//q.name[i] and temp contain distinct strings strcpy(q.name[i+1], temp);//HERE you are copying the orginal string of q.name[i] 

      以上就是c/c++开发分享冒泡排序Carrays交换相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/522829.html

      (0)
      上一篇 2020年12月11日
      下一篇 2020年12月11日

      精彩推荐