zoukankan      html  css  js  c++  java
  • 插入排序(c++实现)

    github博客传送门
    csdn博客传送门

    插入排序原理:

    动图

    #include<iostream>
    using namespace std;
    
    //插入排序
    void InsertionSort(int a[], int size)
    {
    	int i;			//有序区间的最后一个元素的位置,i+1就是无序区间最左边元素的位置
    	for(i = 0; i < size-1; ++i){
    		int tmp = a[i + 1];  //tmp是待插入到有序区间的元素,即无序区间最左边的元素
    		int j = i;
    		while(j >= 0 && tmp < a[j]){		//寻找插入的位置 
    			a[j + 1] = a[j];				//比tmp大的元素都往后移动 
    			--j;
    		}
    		a[j + 1] = tmp;
    	}
    }
    
    //输出二维数组,rows是行数
    void PrintArray(int a[][5], int rows)
    {
    	for(int i = 0; i < rows; ++i){
    		for(int j = 0; j < 5; ++j)
    			cout << a[i][j] << " ";
    		cout << endl;
    	}
    } 
    
    
    //主函数 
    int main(){
    	int b[5] = {50, 30, 20, 10, 40};
    	int a2d[3][5] = {{5, 3, 2, 1, 4},{10, 20, 50, 40, 30},{100, 120, 50, 140, 30}};
    	InsertionSort(b, 5);
    	for(int i = 0; i < 5; ++i)
    		cout << b[i] << " ";
    	cout << endl;
    	for(int i = 0; i < 3; ++i)		//将 a2d每一行均排序 
    		InsertionSort(a2d[i], 5);
    	PrintArray(a2d, 3);
    	return 0;
    }
    
    

    输出:

    结果

  • 相关阅读:
    三元运算
    sys and os
    print.format
    while loop
    线段树模板
    Round #431 (Div.2)
    D. Make a Permutation!
    Round #411 (Div.2)
    Round #432 (Div.2)
    Round #433 (Div.2)
  • 原文地址:https://www.cnblogs.com/Mrzhang3389/p/10127398.html
Copyright © 2011-2022 走看看