快速排序是冒泡排序的改进版,主要思想:1.在待排序的元素内任取一个元素作为基准(通常选第一个元素,但最好的选择方法是从待排序元素中随机选取一个作为基准),称为基准元素;2.将待排序的元素进行分区,比基准元素大的元素放在它的右边,比其小的放在它的左边;3.对左右两个分区重复以上步骤直到所有元素都是有序 ...
分类:
编程语言 时间:
2018-12-31 13:03:19
阅读次数:
167
归并排序算法是一个非常经典的分治算法,和快速排序有些类似,都是将问题分解成规模更小的子问题,分别解决。但是快速排序的子问题求解完成之后就是最优解,无需进行处理。归并算法需要对分别排序完成的子序列进行合并操作。 合并操作非常简单,定义如下:每次取数组a和b第一个元素中较小者放入新的队列,直到有个队列为 ...
分类:
编程语言 时间:
2018-12-30 22:09:16
阅读次数:
214
列表 a[] 列表里的索引序号比他所在的位置少一,eg: 第一个元素的索引序号为0 第二个元素的索引序号为1 操作类型:增 删 改 查 查 核心:切片 name=["a","b","c","d","e"] print(name[1:-1:2]) #此处2为步长 前两个数为范围,最后一个为步长,步长有... ...
分类:
其他好文 时间:
2018-12-30 12:07:12
阅读次数:
211
列表查找以及二分查找 一、列表查找 1、列表查找:从列表中查找指定元素 输入:列表、待查找元素 输出:元素下标或未查找到元素 2、顺序查找:从列表第一个元素开始,顺序进行搜索,直到找到为止。返回找到的那个索引 3、二分查找:从有序列表的候选区data[0:n]开始,通过对待查找的值与候选区中间值的比 ...
分类:
其他好文 时间:
2018-12-27 03:24:55
阅读次数:
130
线性表 线性表(List):由零个或多个数据元素组成的有限序列。 线性结构是最简单,也是最常用的数据结构之一。 线性结构的特点是:在数据元素的有限集中,除第一个元素无直接前驱,最后一个元素无直接后驱外,每个元素数据有且仅有一个直接前驱元素和一个直接后续元素。 线性表 顺序存储结构(Java代码实现) ...
分类:
其他好文 时间:
2018-12-26 20:16:22
阅读次数:
165
题目 输入一个整数数组,实现一个函数来解决该数组中数字的位置,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。 思路 第一个指针pHead 初始化为数组的第一个元素,第二个指针pTail 初始化为数组的最后一个元素。根据题目要求:所有奇数位于数组的前半部分,偶数位于数组的后半部分;我们只 ...
分类:
编程语言 时间:
2018-12-25 23:39:35
阅读次数:
258
直接选择排序和直接插入排序类似,都将数据分为有序区和无序区,所不同的是直接播放排序是将无序区的第一个元素直接插入到有序区以形成一个更大的有序区,而直接选择排序是从无序区选一个最小的元素直接放到有序区的最后。 设数组为a[0…n-1]。 1. 初始时,数组全为无序区为a[0..n-1]。令i=0 2. ...
分类:
编程语言 时间:
2018-12-25 13:14:12
阅读次数:
242
1.1迭代器 什么是迭代器: 迭代器是一个可以记住遍历的位置对象 迭代器对象从集合的第一个元素元素开始访问,直到所有元素被访问完结束,迭代器只能往前不会后退。 迭代器有两个基本方法:iter ,next 方法 内置函数iter(),next() 本质上都是用的对象.__iter__(),__next ...
分类:
编程语言 时间:
2018-12-24 10:23:55
阅读次数:
162
思路:滑动窗口(长度为k+1)看这个窗口里的是否有两个元素的值相同。加查找表。 函数lower_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置. 注意:如果所有元素都小于val,则返回last的位 ...
分类:
其他好文 时间:
2018-12-24 02:56:44
阅读次数:
138
数组去重 1、双循环去重 双重for(或while)循环是比较笨拙的方法,它实现的原理很简单:先定义一个包含原始数组第一个元素的数组,然后遍历原始数组,将原始数组中的每个元素与新数组中的每个元素进行比对,如果不重复则添加到新数组中,最后返回新数组;因为它的时间复杂度是O(n^2),如果数组长度很大, ...
分类:
编程语言 时间:
2018-12-23 17:58:55
阅读次数:
173