DS内排—直插排序
Posted szu-ds-wys
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DS内排—直插排序相关的知识,希望对你有一定的参考价值。
题目描述
给定一组数据,使用直插排序完成数据的升序排序。
--程序要求--
若使用C++只能include一个头文件iostream;若使用C语言只能include一个头文件stdio
程序中若include多过一个头文件,不看代码,作0分处理
不允许使用第三方对象或函数实现本题的要求
输入
数据个数n,n个数据
输出
直插排序的每一趟排序结果
样例输入
7 34 23 677 2 1 453 3
样例输出
23 34 677 2 1 453 3 23 34 677 2 1 453 3 2 23 34 677 1 453 3 1 2 23 34 677 453 3 1 2 23 34 453 677 3 1 2 3 23 34 453 677
提示
#include<iostream> using namespace std; #define INF 0x7f int n; void printarray(int *array) { for(int i=0;i<n;i++) { if(i!=n-1) cout<<array[i]<<" "; else cout<<array[i]<<endl; } } void Insertsort(int *array) { int i,j,temp; for(i=1;i<n;i++) {///第一个元素已经放入作为已排序序列的第一个元素 temp=array[i];///依次取出未排序序列的第一个元素 for(j=i;j>=1&&array[j-1]>temp;j--) {///依次与已排序序列中元素比较并右移 array[j]=array[j-1]; } array[j]=temp;///此时j处腾空,放入待排序元素 printarray(array); } } int main() { cin>>n; int *array=new int[n]; for(int i=0;i<n;i++) cin>>array[i]; Insertsort(array); delete []array; return 0; }
以上是关于DS内排—直插排序的主要内容,如果未能解决你的问题,请参考以下文章