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

      

  • 相关阅读:
    Vue less使用scope时渗入修改子组件样式
    Spring容器初始话原理图
    Java的动态代理
    Spring_xml和注解混合方式开发
    Spring_xml方式开发
    Spring入门初体验
    数论
    虚拟IP和IP漂移
    字符串hash + 二分答案
    字符串hash
  • 原文地址:https://www.cnblogs.com/mjn1/p/10702023.html
Copyright © 2011-2022 走看看