【数据结构和算法】排序算法之三:插入排序

来源:互联网 发布:软件研制任务书 编辑:程序博客网 时间:2024/06/06 01:19

一  插入排序

(1)  思想

在玩扑克牌的时候,我们不会像选择排序那样每次都从一堆牌中选择最小的来进行排序,而是没摸一张牌,然后插入现有的手牌中,那么此时现有的手牌就必须是有序的。

插入排序的思想正是如此:每次将待排序元素插入现有的有序数组中,从而得到一个新的,个数增加1的有序数组。

(2)  实现

//插入排序void Insert_sort(SortArray *A , int n){int i ,j ;int temp;//用于存储待排序元素for (i = 1;i < n;i++)  //数组第0位为初始有序数组,所以从第1位开始插入{temp = (*A)[i];j = i-1;while ((*A)[j]>temp && j>=0){(*A)[j+1] = (*A)[j];j--;}(*A)[j+1] = temp;}}


附上主程序代码:

#include <stdio.h>#include "stdafx.h"#include <iostream> using namespace std;#define MAX 100typedef int SortArray[MAX];int _tmain(int argc, _TCHAR* argv[]){int n ;SortArray A;cout<<"/**插入排序**/\n"<<"请输入数组个数"<<endl;cin>>n;cout<<"请输入待排序数组"<<endl;for (int i = 0 ; i < n ; i++){cin>>A[i];}cout<<"正在排序请稍后....."<<endl;Insert_sort(&A,n);cout<<"排序结果如下....."<<endl;for (int i = 0 ; i < n ; i++){cout<<A[i]<<endl;}system("pause");return 0;}


1 0
原创粉丝点击