直接插入排序
来源:互联网 发布:影响黄金的数据 编辑:程序博客网 时间:2024/05/03 12:32
题目描述
直接插入排序是一种最简单的排序方法,它的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的且记录数增加了1的有序表。
其算法可以描述如下:
在本题中,读入一串整数,将其使用以上描述的直接插入排序的方法从小到大排序,并输出。
输入
输入的第一行包含1个正整数n,表示共有n个整数需要参与排序。其中n不超过1000。 第二行包含n个用空格隔开的正整数,表示n个需要排序的整数。
输出
只有1行,包含n个整数,表示从小到大排序完毕的所有整数。 请在每个整数后输出一个空格,并请注意行尾输出换行。
样例输入
102 8 4 6 1 10 7 3 5 9
样例输出
1 2 3 4 5 6 7 8 9 10
#include<iostream>#include<cstdio>#include<cstring>#include<malloc.h>#include<cmath>using namespace::std;int m;int n;int s[1111111];void Swap(int low,int high){ int data; data=s[low]; s[low]=s[high]; s[high]=data;}int Partition(int low,int high){ int pivotkey; pivotkey=s[low]; while(low<high){ while(low<high&&s[high]>=pivotkey){ high--; } Swap(low,high); while(low<high&&s[low]<=pivotkey){ low++; } Swap(low,high); } return low;}void Qsort(int low,int high){ int pivot; if(low<high){ pivot=Partition(low,high); Qsort(low,pivot-1); Qsort(pivot+1,high); }}void QuickSort(){ Qsort(1,n);}int main(){ while(~scanf("%d",&n)){ int i,j; for(i=1;i<=n;i++) scanf("%d",&s[i]); QuickSort(); for(i=1;i<=n;i++) cout<<s[i]<<" "; cout<<endl; } return 0;}
0 0
- 插入排序--直接插入
- 插入排序------直接插入
- 插入排序---直接插入
- 排序:直接插入排序
- 排序---直接插入排序
- 排序 -- 直接插入排序
- 排序---直接插入排序
- 排序--直接插入排序
- 排序-直接插入排序
- 【排序】直接插入排序
- 排序--直接插入排序
- 排序:直接插入排序
- 【排序】直接插入排序
- 排序--直接插入排序
- 排序--直接插入排序
- 排序-直接插入排序
- 插入排序--直接插入排序
- 插入排序-直接插入排序
- python字符串
- Java EE 13个规范
- 【Linux4.1.12源码分析】vxlan报文发送之iptunnel_xmit
- 加密算法简介
- Android Activity 淡入淡出和从底部向上弹出动画效果【转】
- 直接插入排序
- Android Studio 必备插件汇总(持续更新中......)
- 用Collections对集合进行增删查改操作
- 数组中超过出现次数超过一半的数字--剑指offer
- 特别的二叉排序树
- 自定义注解的简单实现例子,附上代码和测试结果图
- microzed下Linux启动镜像的制作(1)---------------开发环境的安装
- GIT Cheat Sheet
- 51单片机寻迹小车完整程序