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

      

  • 相关阅读:
    SecureRandom
    《Head First 设计模式》[02] 观察者模式
    《MySQL必知必会》[07] 管理事务处理
    《MySQL必知必会》[06] 触发器
    《MySQL必知必会》[05] 存储过程和游标
    Centos7安装Nginx
    IDEA配置Tomcat
    Java小功能大杂烩
    Java处理中文乱码问题
    Java邮件发送
  • 原文地址:https://www.cnblogs.com/mjn1/p/10702023.html
Copyright © 2011-2022 走看看