简单的插入排序
来源:互联网 发布:电煤指标数据代码 编辑:程序博客网 时间:2024/05/17 01:31
第二篇
简单的插入排序算法的实现,以下的源码都是基于数组实现的,等学习了数据结构之后,再实现基于其他结构的。
插入排序是一种相对比较广泛的排序算法,基本思想就是将一个数插入到已经有序的序列中,时间复杂度为O(n^2),由于其为稳定的排序算法,所以当数据量较小时应用较广。
例如下边这个序列:’
实现起来比较简单,源码如下:
(1)、内部用while循环
void InsertSort(DataType a[],int n){ int i,j; DataType temp; for(i=0;i<n-1;i++) { temp=a[i+1]; j=i; while(j>-1&&temp<a[j]) { a[j+1]=a[j]; j--; } a[j+1]=temp; }}(2)、内部用for循环
void insert_sort(int A[],int n){ int i,j,k; for(i=1;i<n;i++) { int key=A[i]; for(j=i;j>=0;j--) { if(key>A[j]) { for(k=i;k>j+1;k--) A[k]=A[k-1]; break; } } if(j==-1) { for(k=i;k>j+1;k--) A[k]=A[k-1]; } A[j+1]=key; }}相比较而下,第一种代码量小且容易理解。
下边再给出递归的插入排序算法,我们这样理解,将当前的数插入到n个元素的序列中,要保证有序,那么必须保证n-1个元素的序列有序,这就构成了递归式,当然结束的标志就是当前序列中只有一个元素,即为有序。下边给出实现(要用到上边的函数来实现插入动作)。
void insert_sort_recursion(int *A,int n){ if(n>1) { insert_sort_recursion(A,n-1); InsertSort(A,n); }}好了,关于插入排序的简单实现到此结束。后边贴出源文件
#include <iostream>typedef int DataType;using namespace std;void insert_sort(int A[],int n);void InsertSort(DataType a[],int n);void insert_sort_recursion(int *A,int n);int main(){ int A[6]={6,5,4,3,2,1}; int n=6; //insert_sort(A,n); // InsertSort(A,n); insert_sort_recursion(A,n); for(int i=0;i<n;i++) cout<<A[i]<<endl; return 0;}void insert_sort(int A[],int n){ int i,j,k; for(i=1;i<n;i++) { int key=A[i]; for(j=i;j>=0;j--) { if(key>A[j]) { for(k=i;k>j+1;k--) A[k]=A[k-1]; break; } } if(j==-1) { for(k=i;k>j+1;k--) A[k]=A[k-1]; } A[j+1]=key; }}void InsertSort(DataType a[],int n){ int i,j; DataType temp; for(i=0;i<n-1;i++) { temp=a[i+1]; j=i; while(j>-1&&temp<a[j]) { a[j+1]=a[j]; j--; } a[j+1]=temp; }}void insert_sort_recursion(int *A,int n){ if(n>1) { insert_sort_recursion(A,n-1); InsertSort(A,n); }}
阅读全文
1 0
- 简单的插入排序
- 简单的插入排序
- 简单的插入排序
- 简单的插入排序
- 简单的插入排序
- 简单的排序---插入排序
- 插入排序的简单实现
- 简单的插入排序代码
- 简单的直接插入排序
- 插入排序的简单实现
- 插入排序的简单实现
- 插入排序的简单认识。
- 简单排序--插入排序
- 简单排序--插入排序
- 简单排序:插入排序
- 简单的冒泡排序、插入排序、查找排序算法
- 冒泡排序、插入排序、快速排序的简单实现
- 算法导论P10 简单的插入排序
- BZOJ 4985: 评分 二分答案 dp判定
- 深入理解Java线程池
- 在windows上面搭建git远程仓库
- Java NIO系列教程(1): Java NIO 概述
- IOS学习 一 Objective-C
- 简单的插入排序
- vex使用...mapActions报错解决办法
- 颜色表示以及在processing中的应用
- 笨方法学习Python-习题33: While 循环
- 4.偏头痛杨的常见设计模式入门系列之代理模式篇
- lua语法分析原理介绍
- 数据库基础
- P2P互联网金融平台项目SSM+Redis+Mysql+Bootstrap+JQuery
- PAT——1031. 查验身份证