zoukankan      html  css  js  c++  java
  • Insertion Sort

    Insertion Sort

    Write a program of the Insertion Sort algorithm which sorts a sequence A in ascending order. The algorithm should be based on the following pseudocode:

    for i = 1 to A.length-1
        key = A[i]
        /* insert A[i] into the sorted sequence A[0,...,j-1] */
        j = i - 1
        while j >= 0 and A[j] > key
            A[j+1] = A[j]
            j--
        A[j+1] = key
    

    Note that, indices for array elements are based on 0-origin.

    To illustrate the algorithms, your program should trace intermediate result for each step.

    Input

    The first line of the input includes an integer N, the number of elements in the sequence.

    In the second line, N elements of the sequence are given separated by a single space.

    Output

    The output consists of N lines. Please output the intermediate sequence in a line for each step. Elements of the sequence should be separated by single space.

    Constraints

    1 ≤ N ≤ 100

    Sample Input 1

    6
    5 2 4 6 1 3
    

    Sample Output 1

    5 2 4 6 1 3
    2 5 4 6 1 3
    2 4 5 6 1 3
    2 4 5 6 1 3
    1 2 4 5 6 3
    1 2 3 4 5 6
    

    Sample Input 2

    3
    1 2 3
    

    Sample Output 2

    1 2 3
    1 2 3
    1 2 3
    

    Hint

    Template in C

    注意: 每行最后不要输出多余空格

    #include <iostream>
    using namespace std;
    const int MAX = 110;
    int a[MAX];
    void insertionSort(int a[], int n)
    {
    	int key, j;
    	for(int i = 1; i < n; ++ i)
    	{
    		key = a[i];
    		j = i - 1;
    		while(a[j] > key && j >= 0)
    		{
    			a[j + 1] = a[j];
    			j --;
    		}
    		a[j + 1] = key;
    		for(int k = 0; k < n; ++ k)
    		{
    			if(k == n - 1)
    				cout << a[k];
    			else
    				cout << a[k] << " ";
    		}
    		cout << endl;
    	}
    	return ;
    }
    int main()
    {
    	int n;
    	cin >> n;
    	for(int i = 0; i < n; ++ i)
    	{
    		cin >> a[i];
    	}
    	for(int i = 0; i < n; ++ i)
    	{
    		if(i == n - 1)
    			cout << a[i];
    		else
    			cout << a[i] << " ";
    	}
    	cout << endl;
    	
    	insertionSort(a, n);
    	
    	return 0;
    } 
    

      

  • 相关阅读:
    特征选择(四)- 分散度
    机器学习实践中的7种常见错误
    逻辑回归 vs 决策树 vs 支持向量机(I)
    逻辑回归 vs 决策树 vs 支持向量机(II)
    线性回归和逻辑回归
    Mac 下 python 环境问题
    Linux目录/usr结构说明
    Python 处理 json
    感知机、logistic回归 损失函数对比探讨
    SVM探讨
  • 原文地址:https://www.cnblogs.com/mjn1/p/10702023.html
Copyright © 2011-2022 走看看