基本算法
scuyxi
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
交换排序之冒泡排序优化源码及时间复杂度
常见的交换排序包括冒泡排序和快速排序。用于显示的代码:show.cpp#include <iostream>using namespace std;template <class T>void showww(T* t, int n){ for(int i=0; i<n; i++) cout << *(t+i) << endl;}冒泡排序bubble.cpptemplate <原创 2017-04-20 00:04:30 · 1175 阅读 · 0 评论 -
交换排序之快速排序原理、源码及时间、空间复杂度
快速排序的原理:分治策略和递归分治策略分治的基本思想是将原问题分解为若干与原问题结构相似的小问题,递归地解决这些小问题,小问题的解就组合为原问题的解。基本方法选基准基准放中间,划分为左右两个区域(左小又大)再递归地采用该方法分别解决左右两个区域的排序。源码尽可能地减少递归调用的次数//quick_sorttemplate <class T>int quick_sort(T* t, int原创 2017-04-21 00:13:36 · 792 阅读 · 0 评论 -
插入排序:直接插入、折半插入排序源码及时间复杂度
插入排序的方法: 不断将无序队列的元素加入到有序队列中。直接插入排序源码template <class T>//insert_sortint sort(T *t, int n){ int compare_times = 0; for(int i=1; i<n; i++) { T current = t[i]; for(int k=i-1原创 2017-04-22 02:31:12 · 5093 阅读 · 0 评论 -
插入排序:2路插入排序原理分析及源码演示
原理2路插入排序是在直接插入排序的基础上进行优化:减少排序过程中元素移动的次数。不过需要额外增加n个辅助空间。关键思路把新增的辅助空间(n个元素的数组),当做一个环对待,再第一个元素插入之后(标记当前最大最小元素),以后分别从两边插入数据,比最大元素大的放右边,比最大元素小的放左边。 如果大于最小,小于最大,则按照常规插入排序的思路,把最大的元素依次往右边移动,直到找到合适的位置。源码templa原创 2017-04-23 22:07:18 · 1020 阅读 · 0 评论 -
插入排序之shell排序分析及源码演示
名字来源shell排序属于插入排序,因DL.Shell于1959年提出而得名。缩小增量排序shell排序利用了直接插入排序在原序列比较有序的情况下,排序速度较快的原理。通过多次排序,每次缩小增量,序列一次比一次有序,当增量为1时,序列已经有序。源码template <class T>//shell_sortint sort(T *t, int n){ int d = n / 2;原创 2017-04-24 00:13:01 · 458 阅读 · 0 评论 -
排序算法总结
分类按是否涉及涉及内存的内外存交换内排序外排序按策略划分内部排序插入排序交换排序 冒泡排序快速排序选择排序归并排序分配排序待排序数据常用存储方式顺序表(或者直接用向量)链表顺序的方式存储,同时建立一个辅助表(存储关键字和指向记录位置的指针)原创 2017-04-19 21:19:36 · 322 阅读 · 0 评论
分享