gpt4 book ai didi

C++ 对字符指针数组进行排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:14:30 25 4
gpt4 key购买 nike

你能告诉我我的方法有什么问题吗?我最终到处都放了同样的东西,但实际上并没有排序。

void sortArrays(){

int i, j;



for(i=0; i<counter; i++){



for( j=0; j<i; j++){

if( strcmp(title_arr[i], title_arr[j]) < 0){

char* title_temp = title_arr[i];

title_arr[j] = title_temp;





}

}

}

最佳答案

这个:

char* title_temp = title_arr[i];

title_arr[j] = title_temp;

相当于:

title_arr[j] = title_arr[i];

你永远不会交换它们,你只是将一个复制到另一个。你应该添加这一行:

title_arr[i] = title_arr[j];

介于两者之间。这样,您将用 [j] 覆盖 [i],但 _temp 仍然保留 [i] 的旧值,因此您可以将该值复制到 [j],从而交换它们。

我想这也是学习算法的时候了。您的算法称为 "bubble sort"算法。它以简单着称,但在现实环境中它以效率低下着称(技术术语是“teh sux”,真正的技术术语是O(n^2)(“N平方”)性能)。一些更常见(也更有效)的算法包括 Quicksort , merge sort , 和 Heapsort ,等等。有关衡量算法可扩展性的更多信息,请参阅有关 Big Oh notation 的文章.*

但是,正如 vava 在评论中指出的那样,除非您的任务是编写自己的排序函数,否则您将使用 qsort(在 C 中)或 std 获得更好的性能::sort(在 C++ 中)。

int mystrsort(const void *a, const void *b)
{
return strcmp(*(const char **)a, *(const char **)b);
}

// later:
qsort(title_arr, sizeof title_arr / sizeof(char *), sizeof(char *), mystrsort);

我不打算尝试 std::sort,但它的工作原理大致相同(也许更简单)。**

*请注意,任何喜欢的人都可以自由地将这些维基百科链接更改为 Stack Overflow 链接。链接到 SO 会更好,我只是链接到维基百科,因为我知道如何更快地找到我需要的信息。
**请注意,任何喜欢的人都可以免费添加一个 std::sort 示例。我只是对 C++ 不够熟悉。

关于C++ 对字符指针数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2485899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com