这种插入排序或冒泡排序?

时间:2018-03-23 02:25:13

标签: c++ sorting bubble-sort insertion-sort

对于编程考试,我被要求制作插入排序算法来订购老师给我们的数字。

我以为我把它钉了下来。它可能不是最短的算法,但我尽了最大努力,并按照要求排序。

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

你能告诉我你的想法吗?

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

#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;
}

输出1

OUTPUT1

输出2

OUTPUT2

输出3

OUTPUT3

1 个答案:

答案 0 :(得分:1)

这是插入排序。它非常原始。你可以看到它通过比较使用循环之前和之后的元素来使每个元素和trys找到它的位置