Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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++_Sorting_Bubble Sort_Insertion Sort - Fatal编程技术网

C++ 这是插入排序还是冒泡排序?

C++ 这是插入排序还是冒泡排序?,c++,sorting,bubble-sort,insertion-sort,C++,Sorting,Bubble Sort,Insertion Sort,在一次编程考试中,我被要求做一个插入排序算法来排序老师给我们的数字 我以为我搞定了。这可能不是最短的算法,但我尽了最大努力,按照要求进行排序 问题是,我的老师告诉我我做了冒泡排序而不是插入排序,并且拒绝再次检查。我很确定这是一种插入式排序 你能告诉我你的想法吗 我们假设先显示无序数组,然后显示步骤,最后显示有序数组 #include "stdafx.h" #include "iostream" using namespace std; int _tmain(int argc, _TCHAR*

在一次编程考试中,我被要求做一个插入排序算法来排序老师给我们的数字

我以为我搞定了。这可能不是最短的算法,但我尽了最大努力,按照要求进行排序

问题是,我的老师告诉我我做了冒泡排序而不是插入排序,并且拒绝再次检查。我很确定这是一种插入式排序

你能告诉我你的想法吗

我们假设先显示无序数组,然后显示步骤,最后显示有序数组

#include "stdafx.h"
#include "iostream"

using namespace std;

int _tmain(int argc, _TCHAR* argv[]) {

    double killme[34] = {7,5,6,5,78,9,63,36,32,5,78,63,2,1,9,45,23,32,21,45,78,32,58,23,36,41,23,45,21,45,6,9,36,7};   

    cout << "Arreglo desordenado: \n";

    for (int i = 0; i < 34; i++) {
        if(i != 33) {
            cout << killme[i] << ", ";
        }
        else {
            cout << killme[i] << ".";
        }
    }

    cout << endl;
    cout << endl;
    cout << "Pasos: " << endl;
    double var;
    int j = 1;
    int k = 0;

    for (int i = 0; i < 33; i++) {
        if (killme[i+1] < killme[i]) {
            while (killme[i+1] < killme[i]) {
                var = killme[i];
                killme[i] = killme[i+1];
                killme[i+1] = var;
                i--;
                if (i<0) {
                    break;
                }
            }

            for (int i = 0; i < 34; i++) {
                if (i != 33) {
                    cout << killme[i] << ",";
                }
                else {
                    cout << killme[i] << ".";
                }
            }

            cout << endl;
            cout << endl;
        }

        i = k;
        k++;
    }

    cout << "Arreglo ordenado: \n";

    for (int i = 0; i < 34; i++) {
        if (i != 33) {
            cout << i+1 << "." << killme[i] << ", " << endl;
        }
        else {
            cout << i+1 << "." << killme[i] << "." << endl;
        }
    }

    cout << endl;
    system("PAUSE");
    return 0;
}
#包括“stdafx.h”
#包括“iostream”
使用名称空间std;
int _tmain(int argc,_TCHAR*argv[]{
双基尔梅[34]={7,5,6,5,78,9,63,36,32,5,78,63,2,1,9,45,23,32,21,45,78,32,58,23,36,41,23,45,21,45,6,36,7};

cout这是插入排序。它非常原始。正如您所看到的,它使用每个元素,并通过比较元素前后用于循环的位置来尝试找到它的位置。为什么您的数组被称为
killme
?它是用另一种语言编写的吗?如果不是,您需要更好地命名变量,以免混淆rself.你希望得到什么样的答案?请阅读抱歉,我是这个网站的新用户,我正在了解它的工作原理。两者都不是,但它执行的比较与冒泡排序一样多,因为在递增I时会有冗余比较。与插入排序相比,查找新的未排序元素的方法效率低下(您知道前K个元素已经排序,但您需要再次比较)。您将新元素插入已排序子列表的方法是气泡式的,这可能会使您的讲师将其忽略。总体而言,您进行的插入排序比较大约是插入排序的两倍,并且与所需相比,您在处理元素方面花费的时间增加了50%。