Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.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+中按升序对数组集进行排序+;_C++_Sorting - Fatal编程技术网

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
    。不过,您需要提供一个自定义比较器函数
气泡排序是最简单的吗

排序算法的选择取决于诸如最坏情况性能、元素数量等因素。请考虑需要排序的元素数量。想想什么样的表现是可以接受的。在我看来,实现冒泡排序和插入排序或Shell排序一样简单。合并排序/快速排序/基数排序OTOH可能会稍微涉及更多

我想知道是否有一个简单的排序方法的功能

  • 尝试使用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