【数据结构----笔记3】插入排序算法之【直接插入排序】

来源:互联网 发布:ipad不良信息过滤软件 编辑:程序博客网 时间:2024/05/16 12:55

/*______________________________________________________________________________________________________________文件说明:【1】根据数据元素是否完全在内存中,可以将排序算法分为两类:【内部排序】,【外部排序】【2】【内部排序】是指在排序期间元素全部存放在内存中的元素;【3】【外部排序】是指在排序期间,元素无法全部同时存放在内存中,必须在排序过程中,根据要求不断在内、外存             之间移动的排序。【4】【排序】就是重新排列表中的元素,使表中的元素满足按关键字递增或递减的过程。【5】【排序算法的稳定性】如果待排序表中有两个元素Ri,Rj,其对应的关键字Keyi=Keyj,且在排序前Ri在Rj前面,如果使用某一排序算法排序后,Ri仍在Rj的前面,则称这个排序算法是稳定的,否则称该排序算法不稳定的【6】注意!!!(1)算法是否具有稳定性并不能衡量一个算法的优劣,它主要是对算法性质进行描述。(2)对于不稳定的排序算法,只需举出一组关键字的示例说明它的不稳定性即可。【7】一般情况下:内部排序算法在执行过程中都要进行两种操作:【比较】和【移动】通过比较两个关键字,确定对应的元素的前后关系,然后通过移动元素以达到有序。【8】并不是所有的内部排序算法都要基于比较操作,事实上,基数排序就不是基于比较的。内部排序:【1】插入排序算法(1)直接插入排序(2)折半插入排序(3)希尔排序(shell sort)【2】交换排序(1)冒泡排序(bubble sort)(2)快速排序【3】选择排序(1)简单选择排序(2)堆排序【4】二路归并排序(merge sort)【5】基数排序外部排序______________________________________________________________________________________________________________*/#include<iostream>using namespace std;/*____________________________________________________________________________________________________________本文件主要详细说明【插入排序算法】(1)直接插入排序(2)折半插入排序(3)希尔排序(shell sort)____________________________________________________________________________________________________________*//*____________________________________________________________________________________________________________【模块一】直接插入排序【函数原型】template<typename ElemType>void InsertSort(ElemType array[],int iLength)【直接插入排序】适用于【顺序存储】和【链式存储】的线性表。并且一般用于数据较少且基本有序的线性表【函数说明】【1】对数据数组array[]做直接插入排序【2】ILength为数组中待排序记录的数目【直接插入排序算法】【1】从空间角度来看,直接插入排序算法只需要设置监视哨兵tempT来帮助实现即可【2】从时间角度来看,主要的时间耗费在关键字比较和元素的移动操作上。【3】注意!!!!直接插入排序算法并不是任意使用的,它比较适用于待排序记录数目较少且基本有序的情形(1)记录数目较少(2)基本有序【4】直接插入排序使用【就地排序】____________________________________________________________________________________________________________*/template<typename ElemType>void InsertSort(ElemType array[],int iLength){int i,j;ElemType temp;for(i=1;i<iLength;i++){temp=array[i];j   = i-1;while(temp<array[j]){array[j+1]=array[j];j=j-1;}array[j+1]=temp;}}/*____________________________________________________________________________________________________________【主函数】 控制台应用程序  我们的程序从这里开始执行___________________________________________________________________________________________________________*/int main(){int array[10]={3,5,2,7,8,9,1,6,4,0};cout<<"显示需要排序的序列"<<endl;for(int i=0;i<10;i++)cout<<array[i]<<"  ";cout<<"排序的结果是:"<<endl;InsertSort<int>(array,10);for(int i=0;i<10;i++)cout<<array[i]<<"  ";system("pause");return 0;}








原创粉丝点击