自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

sunflower9696的博客

不忘初心,方得始终

  • 博客(5)
  • 收藏
  • 关注

原创 排序算法之快速排序

  快速排序采用分治的思想,是对冒泡排序的一种改进。首先在数组中选取一个数作为pivotkey,将比其小的放在左边,比其大的放在右边,然后对左右两边分别调用快速排序。但是其实现过程有很多种方法,分为两个要点,其一是如何选择pivotkey,可以随机选择、选择两个不同数值中较大的那个或选择首位、中位、末位三者之间的中位数等;其二是如何对数组进行划分,可以从头至尾扫描,将小于中位数的元素与大于中位数的...

2018-03-25 09:59:20 137

原创 排序算法之选择排序

    选择排序对于数组a[1:n]需要进行n次遍历,每次遍历找到第i大的元素,将其与第i位元素进行交换后对a[i+1:n]进行处理。每次遍历进行n-i次比较,1或0次交换,时间复杂度为O(n),对初始数据不敏感。    对选择排序进行优化可得到树形选择排序和堆排序。def SelectSort(a): for i in range(len(a)): min = a[i]...

2018-03-24 01:46:22 111

原创 排序算法之希尔排序

  希尔排序也称之为递减增量排序,是对插入排序的改进。插入排序一次只能将数据向前移一位,并且对插入下一个数没有提供任何帮助。希尔排序将待排序列按照某个增量(如下图令其为4)分成若干个子序列,分别对每个子序列用插入排序算法进行排序。每进行完一趟排序,增量递减(减1或除以2等)。因此,希尔排序也称缩小增量排序。最后一趟排序时,增量缩小为1,即最后一趟排序相当于直接插入排序。其中,增量的选取对希尔排序算...

2018-03-23 22:13:31 184

原创 排序算法之插入排序

  插入排序算法有种递归的思想在里面,它由n-1趟排序组成。对于第i趟排序,即对位置i+1处的元素进行排序时,[1:i]上的元素一定是已经有序的了,接着将第i+1位元素与[1:i]区间内元素进行比较,插入合适的位置。其中,插入过程中可分为两种,一种是边遍历比较边交换位置;一种是找到合适位置后再进行元素移动。下图为第一种插入过程。          插入排序平均需要n2/4次比较和n2/4 次交换。...

2018-03-23 20:44:48 179

原创 排序算法之冒泡排序

    冒泡排序是排序算法里面较为简单的一种算法,有升序与降序之分,面试时可问清楚是升序还是降序。  以升序为例,对于数组a[1:n],每次排序处理第1个数至第n-i个数,将其与下一个元素进行比较,较大的数向后移。每次可确定第i大的数,需经过n-i次比较,最少进行0次交换,最多进行n-i次交换。所需时间复杂度为O(n2)。  优化:每次排序前设定flag=1,若该次排序中进行了交换则将flag置为...

2018-03-23 17:54:47 115

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除