算法学习笔记之插入排序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a_step_further/article/details/54810117

用插入法进行排序

练习步骤:

1. 先生成一个随机的数组

2. 用插入法进行排序


#include <iostream>
#include <stdlib.h>
#include <vector>

using namespace std;

int findInsertPlace(vector<int> v, int value);

int main(){
    //先生成一个随机数组, 数组长度为N, 元素为100以内的随机整数
    int N;
    cout << "输入你想排序的随机数组的长度: ";
    cin >> N;
    int randomList[N];
    for(int i = 0; i < N; i++){
        randomList[i] = rand()%100;
    }

    cout << "生成的随机数组如下: " << endl;
    for(int i = 0; i<N;i++){
        cout << randomList[i] << " " ;
    }
    cout << endl;

    cout << "下面我们用插入法进行排序" << endl;
    vector<int> sortedResult;
    sortedResult.push_back(randomList[0]);
    for(int i = 1; i< N; i++){
        int insertPosition = findInsertPlace(sortedResult, randomList[i]);
        sortedResult.insert(sortedResult.begin()+insertPosition,randomList[i]);
    }

    cout << "排序后的数组为:" << endl;
    vector<int>::const_iterator it;
    for(it=sortedResult.begin(); it!=sortedResult.end(); it++){
        cout << *it << " ";
    }
    cout << endl;

    return 0;
}

int findInsertPlace(vector<int> v, int value){
    //这里假定V是已经按从小到大排好序的向量,该函数要找出value可以插入的位置
    int result = 0;
    if(value >= v[v.size()-1]) result = v.size();
    if(value < v[0]) result = 0;
    for(int i=0; i<v.size()-1;i++){
        if(value >= v[i] && value <= v[i+1]){
            result = i+1;
        }
    }
    return result;
}


编译运行的结果如下图所示:


猜你喜欢

转载自blog.csdn.net/a_step_further/article/details/54810117