跨越时空的一篇文章 2019-10-26 23:44:11

前言

自从七月份以来,好久没有写出一些像样子的程序了,学的东西倒是不少,可是真正掌握的东西却不是很多,本来说好通过做笔记学习的,可是笔记总是做着做着觉得自己的笔记没别人做的好,于是经常都是三天打鱼两天晒网的做笔记,这确实是一个不好的习惯,今天浪费了不少时间看小说,想起来很是后悔,希望自己能够从看小说的坑里面跳出来,给自己定了个计划,每天都花时间总结自己一天所学,把看小说的这个坏习惯给改正.

一点小的感悟

最近这两个月以来,一直在坚持锻炼和早起以及每天去图书馆的习惯,每天健身,这个习惯一点问题都没有,这点自己做的还是不错的,可是每天锻炼完总是想去超市买点零食吃,说真的,健身这么久,我早已感受到吃零食对身体有多大的伤害,每次晚上吃了一些零食之后,总是晚上睡不着觉,进而影响第二天的早起,不得不说,恶性循环的力量真的是大.
我现在有个很深的感悟关于如何保持好的状态.平常心才是最好的状态,当你在坚持养成一个好的习惯的过程中,不要在这个过程打破它,甚至在习惯养成以后也不要试图去打破它,因为可能一次可能就会造成很严重的恶性循环,不知道古人说说的近朱者赤,近墨者黑.物以类聚,人以群分是不是也是这个道理,我觉得应该是这样的,总感觉坏的事情会连带着很多坏的事情发生.而好的事情也会造成很多好的事情发生.所以请怀着一颗感恩的心乐观的心看待世界吧.

(此外:告诫自己,不要打破自己的习惯,也不要做一些坏的事情)

正题

好了好了,进入正题了,谈谈快速排序吧,真的是好久没有写代码了,这次编写快速排序的过程真的是让人感触颇深,一上手就出了好多问题,开始是将java当成python来写,后来切换过来之后又发现java的一些基本语法也不是很清楚,好在这些问题都好解决.
那么什么是快速排序呢.
说到底每一种排序算法都是一种思想,快速排序的思想就是分治思想,一个长度为N的数组,找一个基准将问题分为两部分,这个基准一般是array[0]或者array[N],这是为了方便头指针和尾指针扫描.

我们以array[0]为基准为例.那么算法如何运行?算法的框架

  • 1.数组头指针为array[1]尾指针为array[2],然后从头指针向后找比基准位置值大的数,从尾指针找比基准位置值小的值,条件(==要满足left < right ==)这样可以保证在数组left左边的值小于基准,right右边的值大于基准,找到对了对应值之后互换left 和 right的值,接着扫描替换,直到 left 等于 right.
  • 2.当1做完则基准(的位置应该为left所指的位置),将array[0]插入到该位置,然后返回基准的位置pos.
  • 3.对子数组array[0,pos-1]和array[pos+1,N]进行递归处理.

此时就能求出问题的解了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值