
算法学习
BigData_Hadoop
这个作者很懒,什么都没留下…
展开
-
Python_插入排序
Python 插入排序插入排序的基本思想是将列表分为两段,(左边,当前元素值,右边)。位置(position)从索引1开始,首先当前位置的值和当前位置的左边一个元素做比较,由于刚开始当前位置左边只有一个元素,所以左边是已经拍好顺序的,插入排序的核心就是左边任何时候都是已经拍好顺序的。当当前位置和当前位置左边元素比较的时候,如果当前位置的左边一个元素的值大于当前位置元素值,那么当前位置左边一个元...原创 2018-06-04 16:59:50 · 259 阅读 · 0 评论 -
Python_希尔排序
Python 希尔排序希尔排序也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本,希尔排序的核心思想是:先将数组分割成若干个子序列,分别进行直接插入排序,然后一次缩减增量再进行排序,直至增量为零,然后对全体进行一次直接插入排序。 增量也叫分组步长, 第一次为len(array) / 2 第二次为(len(array)/2) / 2 直到增量为1 index 和 index+s...原创 2018-06-04 17:58:27 · 288 阅读 · 0 评论 -
Python_选择排序
Python 快速排序选择排序的排序原理是每一次都从待排序的元素和中选择出最小或者最大的一个元素,存放在起始的位置,例如,从开始j,i两个索引,j负责起始位置,也就是j的索引是指向最小的值,然后在j的之后的元素中找最小的值,然后更新small_value_index,当找到最小元素的时候,将j和最小元素交换位置。 代码如下:# -*- coding: utf-8 -*-# @Tim...原创 2018-06-05 10:01:01 · 328 阅读 · 0 评论 -
Python_快速排序
快速排序有三个变量:low(left),hight(right),key(其中left,right代表数组的首尾,是不变值) low是指向数组左边的指针,hight是指向数组右边的指针,key是比较的基准。在执行快速排序的过程中,首先hight从有到左移动,如果low小于hight,而且hight指向的值大于key,那么hight就继续往左移动如果hight指向的数据小于了key,那么就...原创 2018-05-30 11:09:33 · 287 阅读 · 0 评论 -
Python 冒泡排序
Python 冒泡排序冒泡排序是最简单的排序,也没什么技术含量,就为了凑一个排序十大算法集合。 冒泡排序首先比较相邻的两个元素,如果第一个比第二个大,那么就交换,否则继续往后比较,知道最后一对。重复以上步骤,直到最后一对。 代码如下:# -*- coding:utf-8 _*- # @Author: dreams # @File: bubble_sort.py # @T...原创 2018-07-26 09:24:25 · 376 阅读 · 0 评论 -
Python 归并排序
Python 归并排序归并排序采用分而治之的方法,递归求解。 - 将长度为n的列表分成两个长度为n/2的子序列 - 对两个子序列分别采用归并排序 - 将两个排序好的子序列合并成一个最终的排序列表 代码如下:# -*- coding:utf-8 _*- # @Author: dreams # @File: merge_sort.py # @Time: 2018/7/2...原创 2018-07-26 10:34:00 · 505 阅读 · 0 评论 -
JAVA_Heap_Sort
JAVA 堆排序堆堆是具有下列性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。 算法思想:将待排序的序列构造成一个大顶堆。此时,整个序列的最大值就是堆顶的根节点。将它移走(其实就是将其与堆数组的末尾元素交换,此时末尾元素就是最大值),然后将剩余的n-1个序列重新构造成一个堆,这样就会得到n个...转载 2018-09-09 10:18:06 · 457 阅读 · 0 评论