介绍
这篇文章记录我学习的算法,以及每个算法的思路。
有些算法还没有去研究,现放在那里,以后有时间去学
排序算法
交换排序
快速排序(难)
1、就是从序列中随意选择一个元素,然后把这个序列中的所有小于这个元素的放在左边,大于的放在右边。 2、第一轮循环过后,序列被分成两个,左边小的,右边大的。 3、左边和右边再随机选择一个元素,再按照之前方法进行筛选。
冒泡排序(简单)
1、外层循环数组长度-1次数 2、内层循环并判断两两元素大小,进行排序
插入排序
直接插入排序(简单)
1、三层循环,外层控制循环次数(这个数组有多长,它就循环几次),内两层进行排序。 2、第一次循环数组第一个数,第二次循环数组前两个,第三次循环前四个,以此类推。 3、第一次不用比较,第二次第二个数跟第一比较,第三次第三个跟第一、二比较,以此类推
折半插入排序(有点难度)
1、外层循环次数由数组长度决定 2、内层排序,只是直接插入排序的改进 3、但是折半排序,是要比较的那个元素前面的元素都是排好序的, 4、然后把拍好序的序列长度除2,比较的那个元素和中间元素进行比较 5、小于左移,大于右移,以此类推
希尔排序
1、推荐一个博客,讲的不错。MoreWindows
选择排序
简单选择排序
1、优化:第一轮的时候,进行比较,找出最小的,把它和第一个元素进行交换。
堆排序
归并排序
非比较排序
计数排序
1、桶排序是它的升级版
基数排序
七大查找算法
顺序查找
二分查找
插值查找
斐波那契查找
树表查找
分块查找
哈希查找