- 博客(5)
- 资源 (2)
- 收藏
- 关注
原创 数据结构(五)堆排序
1、算法流程(1)对原始数据构建大根堆:A、从下至上,遍历每个非叶子父节点,保证每个非叶子父节点都比它的左右子节点来的大,非叶子父节点的对应索引范围为[0,n/2-1];B、在遍历每个非叶子父节点的时候,如果发生该节点交换(下沉),那么要递归下去(2)交换大根堆构建后的数组的首个元素与末尾元素,这时候数组的末尾数值最大,排除该元素排序。(3)接着因为这个堆,就相当于堆顶元素被替换成了新的元素,其他
2018-01-28 11:17:58 1180
原创 数据结构(四)选择排序
1、算法流程(1)首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。(2)然后,再从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾。(3)以此类推,直到所有元素均排序完毕。2、代码实现void select_sort(int*data,int length) { for(int i=0;i<length;i++) { int min_da
2018-01-27 20:17:51 535
原创 数据结构(三)插入排序
1、算法流程(1)假设数据集A,第i个元素的左边是排序好的;(2)把第i个元素a从右到左与i左边的元素b比较,如果发现该b>a,那么就把b后移一个位置(需要把a元素的位置先临时保存下来,然后空出位置);直到b的时候,就把a插进去。2、代码实现:void insert_sort(int*data,int length) { for(int i=0;i<length;i++) {
2018-01-27 19:53:32 432
原创 数据结构(二)冒泡排序
1、算法流程:(1)循环比较两个相邻的元素,如果第一个比第二个大,那么交换(2)经过第一轮迭代后,最后一个元素是最大值;然后继续第二轮迭代,除了最后一个之外(3)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。2、代码实现:void bubble_sort(int*data,int length) { bool flag= true; int count=0;
2018-01-27 18:49:16 632
原创 数据结构(一)快速排序
1、算法流程(1)输入两个哨兵i,j,整个过程要一直保证i(1)从数组D中选择第一个数为基准数A=D[i];(2)循环查找交换对,并交换,直到不满足i:从i+1元素开始,向右查找大于A的数a(始终保证i;从j元素查找小于A的数b(始终保证i,得到交换对(a,b),然后进行交换(4)判断终止位置i=j的位置数值与基准数A是否需要交换,这样最后得到的就是A左边的数D1都是小于A的,A右边的数D2,都是
2018-01-27 17:40:17 1252 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人