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

      

  • 相关阅读:
    select,radio,checkbox的美化
    BBMASTER 博客
    thymeleaf教程
    Spring Boot入门01
    thymeleaf
    [转]Eclipse中10个最有用的快捷键组合
    SpringMVC实现文件上传
    Maven_项目管理利器入门
    [转]centos6.5安装mysql
    YOUNG博客项目设计书_v01.00_账号管理模块
  • 原文地址:https://www.cnblogs.com/mjn1/p/10702023.html
Copyright © 2011-2022 走看看