![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
八大排序算法C++
开源学开源
这个作者很懒,什么都没留下…
展开
-
八大排序算法之(二)插入排序 希尔排序
希尔排序算法原理:设待排序序列共n个元素,首先取一个整数gap<n作为间隔,将全部元素分为间隔为gap的gap个子序列并对每一个子序列进行直接插入排序。然后,缩小间隔gap,重复上述操作,直至gap缩小为1,此时所有元素位于同一个序列且有序。由于刚开始时,gap较大,每个子序列元素较少,排序速度较快;待到排序后期,gap变小,每个子序列元素较多,但大部分元素基本有序,所以排序速度仍较快。一般地,g原创 2017-10-13 14:23:17 · 23760 阅读 · 1 评论 -
八大排序算法之(一)插入排序 直接插入排序
直接插入排序算法原理:当插入第i(i>=1)个元素时,前面的V[0],…,V[i-1]等i-1个 元素已经有序。这时,将第i个元素与前i-1个元素V[i-1],…,V[0]依次比较,找到插入位置即将V[i]插入,同时原来位置上的元素向后顺移。在这里,插入位置的查找是顺序查找。直接插入排序是一种稳定的排序算法,其实现如下:void Directinsertionsort(T& Srcarray) {原创 2017-10-12 20:54:16 · 22452 阅读 · 2 评论 -
八大排序算法之(四)选择排序
选择排序的算法原理:第1趟,在待排序记录a[0]~a[n-1]中选出最大的记录,将它与a[n-1]交换;第2趟,在待排序记录a[0]~a[n-2]中选出最小的记录,将它与a[n-2]交换;以此类推,第i趟在待排序记录a[0]~a[n-i]中选出最小的记录,将它与a[n-i]交换,使有序序列不断增长直到全部排序完毕。 算法实现: #include using namespace std; tem原创 2017-10-15 16:09:49 · 29289 阅读 · 0 评论 -
八大排序算法之(五)冒泡排序
冒泡排序算法原理:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。换句话说就是把数据按顺序沉降下去。 冒泡排序算法实现: #include using namespace std原创 2017-10-15 16:55:22 · 41505 阅读 · 0 评论 -
八大排序算法之(三)插入排序 折半插入排序
折半插入排序算法原理:把一个新的元素插入已经拍好顺序的数组的过程中,寻找插入位置时,将待插入区域的首元素设置为a[left],末元素设置为a[right],比较时,将待插入元素与a[mid],其中mid=(left+right)/2相比较,如果比参考元素小,则选择a[left]到a[mid-1]为新的插入区域(即right=m-1),否则选择a[mid+1]到a[right]为新的插入区域(即le原创 2017-10-16 22:20:39 · 26029 阅读 · 0 评论