插入排序实现 C++


#include <iostream> using namespace std; void InsertionSort(int *A, int length) { /* 第0个位置有序,从第1个位置开始(j=1) 每次j:将A[j]插入到有序A[0...j-1]中 直到j>n为止 */ for (int j=1; j<length; j++) { int key = A[j]; int i = j-1; while (i>=0 && A[i]>key) { A[i+1] = A[i]; i--; } A[i+1] = key; } } int main() { int s[100]; int i = 0; while (cin >> s[i]) { i++; if (cin.get() == '\n') break; } int len = i; InsertionSort(s, len); for (int i=0; i<len; i++) { cout << s[i] << " "; } cout << endl; return 0; }

  

第二种,使用vector实现

#include <iostream>
#include <vector>
using namespace std;

void InsertionSort(vector<int>& A, vector<int>::size_type length)
{
    /*
     第0个位置有序,从第1个位置开始(j=1)
     每次j:将A[j]插入到有序A[0...j-1]中
     直到j>n为止
     */
    for (int j=1; j<length; j++)
    {
        int key = A[j];
        int i = j-1;
        while (i>=0 && A[i]>key)
        {
            A[i+1] = A[i];
            i--;
        }
        A[i+1] = key;
    }
}

int main()
{
    vector<int> s;
    int num;
    while (cin >> num)
    {
        s.push_back(num);
        if (cin.get() == '\n') break;
    }
    InsertionSort(s, s.size());
    for (vector<int>::size_type ix=0; ix!=s.size(); ix++)
        cout << s[ix] << " ";
    cout << endl;
    return 0;
}

  

 

posted @ 2020-08-27 16:07  大战拖延  阅读(267)  评论(0)    收藏  举报