C++ 在C+中按升序对数组集进行排序+;
我正试图编写一个代码来按升序对数组进行实际排序,所以发生的情况是,这就是我所拥有的C++ 在C+中按升序对数组集进行排序+;,c++,sorting,C++,Sorting,我正试图编写一个代码来按升序对数组进行实际排序,所以发生的情况是,这就是我所拥有的 char myListArray[10][40]; myListArray = "Yeah?", "Tomorrow", "Again", "I will see you"; 因此,它应该按照ASCII值的顺序进行排序 Again I will see you Tomorrow Yeah? 我创造了这样的东西 char tem
char myListArray[10][40];
myListArray = "Yeah?",
"Tomorrow",
"Again",
"I will see you";
因此,它应该按照ASCII值的顺序进行排序
Again
I will see you
Tomorrow
Yeah?
我创造了这样的东西
char temp[40];
temp[0] = '\0';
int i, j, pos = 10, flag = 1;
for(i = 1; (i <= pos) && flag; i++)
{
flag = 0;
for (j=0; j < (pos -1); j++)
{
if (phrase[i][j+1] > phrase[i][j])
{
strcpy(temp, phrase[i]);
strcpy(phrase[i], phrase[i+1]);
strcpy(phrase[i+1], temp);
flag = 1;
}
}
}
我想知道是否有一个简单的排序方法的功能
- 尝试使用C++构造,如<代码>字符串< /> >、<代码>向量< /代码>和<代码>排序< /代码>。那你的工作就容易多了李>
- 但是,如果您想使用C,可以查找
。不过,您需要提供一个自定义比较器函数qsort
- 尝试使用C++构造,如<代码>字符串< /> >、<代码>向量< /代码>和<代码>排序< /代码>。那你的工作就容易多了李>
- 但是,如果您想使用C,可以查找
。不过,您需要提供一个自定义比较器函数qsort
排序算法的选择取决于诸如最坏情况性能、元素数量等因素。请考虑需要排序的元素数量。想想什么样的表现是可以接受的。在我看来,实现冒泡排序和插入排序或Shell排序一样简单。合并排序/快速排序/基数排序OTOH可能稍微复杂一些。使用
std::array
、std::string
和std::sort
std::array<std::string, 4> arr = { "Yeah?", "Tomorrow", "Again", "I will see you" };
std::sort(arr.begin(), arr.end());
std::array arr={“是吗?”,“明天”,“再来一次”,“我们再见”};
排序(arr.begin(),arr.end());
如果您不能使用
std::array
,std::string
和std::sort
访问std::array
,的话,这也可以简单地调整为使用C数组或std::vectors
std::array<std::string, 4> arr = { "Yeah?", "Tomorrow", "Again", "I will see you" };
std::sort(arr.begin(), arr.end());
std::array arr={“是吗?”,“明天”,“再来一次”,“我们再见”};
排序(arr.begin(),arr.end());
如果您无法访问
std::array
,如果您希望它像您看起来那样使用纯C,那么您就错过了strcmp
和qsort
,这也可以简单地调整为使用C数组或std::vectors
。注意,你的代码与C++无关,它是经典的C代码,问题被错误地处理。如果您希望在C++中完成,请查看实际使用C++容器的其他答案。使用C++没有意义,如果你不知道,使用C++的部分,而不仅仅是C!p>
下面是一个独立的工作示例。请注意,2D数组和字符串指针数组都有一个示例。您的2D数组声明有多余的第一个数组大小。这是不必要的,编译器知道有多少字符串
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void sort1(void)
{
// 2D array
char strings[][40] = {
"Yeah?",
"Tomorrow",
"Again",
"I will see you"
};
const int el_size = sizeof(strings[0]);
const int el_count = sizeof(strings)/el_size;
int i;
printf("\n%s\n", __FUNCTION__);
qsort(strings, el_count, el_size, strcmp);
for (i = 0; i < el_count; ++i) {
printf("%s\n", strings[i]);
}
}
int strcmp_ptr(const char ** a, const char ** b)
{
return strcmp(*a, *b);
}
void sort2(void)
{
// Array of pointers to string constants
const char * strings[] = {
"Yeah?",
"Tomorrow",
"Again",
"I will see you"
};
const int el_size = sizeof(strings[0]);
const int el_count = sizeof(strings)/el_size;
int i;
printf("\n%s\n", __FUNCTION__);
qsort(strings, el_count, el_size, strcmp_ptr);
for (i = 0; i < el_count; ++i) {
printf("%s\n", strings[i]);
}
}
int main(void)
{
sort1();
sort2();
return 0;
}
#包括
#包括
#包括
作废sort1(作废)
{
//二维阵列
字符字符串[][40]={
“是吗?”,
“明天”,
“再次”,
“再见”
};
const int el_size=sizeof(字符串[0]);
const int el_count=sizeof(strings)/el_size;
int i;
printf(“\n%s\n”,函数);
qsort(字符串、el_计数、el_大小、strcmp);
对于(i=0;i
如果您想让它像您看起来那样使用纯C,那么您就错过了strcmp
和qsort
。注意,你的代码与C++无关,它是经典的C代码,问题被错误地处理。如果您希望在C++中完成,请查看实际使用C++容器的其他答案。使用C++没有意义,如果你不知道,使用C++的部分,而不仅仅是C!p>
下面是一个独立的工作示例。请注意,2D数组和字符串指针数组都有一个示例。您的2D数组声明有多余的第一个数组大小。这是不必要的,编译器知道有多少字符串
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void sort1(void)
{
// 2D array
char strings[][40] = {
"Yeah?",
"Tomorrow",
"Again",
"I will see you"
};
const int el_size = sizeof(strings[0]);
const int el_count = sizeof(strings)/el_size;
int i;
printf("\n%s\n", __FUNCTION__);
qsort(strings, el_count, el_size, strcmp);
for (i = 0; i < el_count; ++i) {
printf("%s\n", strings[i]);
}
}
int strcmp_ptr(const char ** a, const char ** b)
{
return strcmp(*a, *b);
}
void sort2(void)
{
// Array of pointers to string constants
const char * strings[] = {
"Yeah?",
"Tomorrow",
"Again",
"I will see you"
};
const int el_size = sizeof(strings[0]);
const int el_count = sizeof(strings)/el_size;
int i;
printf("\n%s\n", __FUNCTION__);
qsort(strings, el_count, el_size, strcmp_ptr);
for (i = 0; i < el_count; ++i) {
printf("%s\n", strings[i]);
}
}
int main(void)
{
sort1();
sort2();
return 0;
}
#包括
#包括
#包括
作废sort1(作废)
{
//二维阵列
字符字符串[][40]={
“是吗?”,
“明天”,
“再次”,
“再见”
};
const int el_size=sizeof(字符串[0]);
const int el_count=sizeof(strings)/el_size;
int i;
printf(“\n%s\n”,函数);
qsort(字符串、el_计数、el_大小、strcmp);
对于(i=0;i