花费了几周的时间断断续续的练习和模仿与使用JavaScript代码实现了十大排序算法。
里面有每种算法的动图和静态图片演示,看到图片可以自己先按照图片的思路实现一下。
两年前端学习笔记:https://github.com/zhangyachang/Notes 欢迎点个star
1.冒泡排序(Bubble Sort) 1.算法描述 2.算法描述和实现 3.冒泡排序动图演示
2.选择排序(Selection Sort 1.算法简介 2.算法描述和实现 3.选择排序动图演示
3.插入排序(Insertion Sort) 1.算法简介 2.算法的描述和实现 3.插入排序动图演示
4.希尔排序(Shell Sort) 1.算法简介 2.算法描述和实现 3.希尔排序图示
5.归并排序(Merge Sort) 1.算法简介 2.算法描述和实现 3.归并排序动图演示
6.快速排序(Quick Sort) 1.算法简介 2.算法描述和实现 3.快速排序动图演示
7.堆排序(Heap Sort) 1.算法简介 2.算法描述和实现 3.堆排序动图演示
8.计数排序(Counting Sort) 1.算法简介 2.算法描述和实现 3.计数排序动图演示
9.桶排序(Bucket Sort) 1.算法简介 2.算法描述和实现 3.桶排序图示
10.基数排序(Radix Sort) 1.算法简介 2.算法描述和实现 3.基数排序动图演示后记
排序算法说明
1.排序的定义
对一序列对象根据某个关键字进行排序
输入:n个数:a1,a2,a3,…,an 输出:n个数的排列:a1′,a2′,a3′,…,an’,使得a1′<=a2′<=a3′<=…<=an’。
再讲的形象点就是排排坐,调座位,高的站后面,矮的站前面。
2.对于评述算法优劣术语的说明
稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;
内排序:所有排序操作都在内存中完成;外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;
时间复杂度:一个算法执行所耗费的时间。空间复杂度:运行完一个程序所需内存的大小。
3.排序算法图片总结
图片名词解释:n:数据规模 k 桶的个数 in-place:占用常数内存,不占用额外内存 Out-place:占用额外内存。