
排序算法
acm_JL
这个作者很懒,什么都没留下…
展开
-
简单排序算法
算法思想:将初始序列(A[0]~A[n-1])作为待排序序列,第一趟在待排序序列(A[0]~A[n-1])中找最小值元素,与该序列中第一个元素A[0]交换,这样的子序列(A[0])有序,下一趟排序在待排序子序列(A[1]~A[n-1])中进行。第i趟排序在待排序子序列(A[i-1]~A[n-1])中,找最小值元素,与该子序列中第一个元素A[i-1]交换。经过n-1趟排序后使得初始化序列有序。原创 2016-03-22 23:52:10 · 848 阅读 · 0 评论 -
直接插入排序
算法思想:将序列的第一个元素作为一个有序序列,然后将剩下的n-1个元素按照关键字大小依次插入该有序序列,每插入一个元素后依然保持该序列有序,经过n-1次排序后就成为有序序列。#includeusing namespace std;void insert(int *a,int n){ for(int i=1;i<n;i++)//n-1趟 { int j=i; in原创 2016-03-23 00:21:07 · 448 阅读 · 0 评论 -
冒泡排序
算法思想:第一趟在序列(A[0]~A[n-1])中从前到后进行两个相邻元素的比较,若后者小,则交换,比较n-1次;第一趟排序结束,最大的元素被交换到A[n-1]中,下一趟排序只需要在子序列(A[0]~A[n-2])进行,如果在某一趟排序中未交换元素,说明子序列已经有序原创 2016-03-23 20:37:52 · 536 阅读 · 0 评论 -
快速排序
#includeusing namespace std;int a[100],n;void swap(int *a,int *b){ int t; t=*a; *a=*b; *b=t; } void Qsort(int *a,int left,int right){ int i,j; if(left<right) { i=left; j=right+1; d原创 2016-03-23 20:39:25 · 581 阅读 · 0 评论 -
堆排序
堆排序 堆排序是利用堆的性质进行的一种选择排序。下面先讨论一下堆。1.堆 堆实际上是一棵完全二叉树,其任何一非叶节点满足性质: Key[i]=Key[2i+1]&&key>=key[2i+2] 即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。 堆分为大顶堆和小顶堆,满足Key[i]>=Key[2i+1]&&key>=key[2i+2]称为原创 2016-03-23 20:51:19 · 432 阅读 · 0 评论