快速排序javascript实现
快速排序基本思想:
以升序为例
数组arr,数组个数n;
1、选取一个待排序的元素。一般选第一个位置作为基准值temp=arr[0]。
2、选取带排序数组的两端元素的位置作为哨兵的位置,左端为哨兵i,右端为哨兵j,
3、先用哨兵j所在位置的值与基准值比较,如比基准值大则左移,再用哨兵i所在位置的值与基准值比较,比基准值小则右移。
4、哨兵i,j位置已确定但是i还是在j的左边,则交换值arr[i]和arr[j]。
5、否则,i,j相遇,则基准值位置确定。交换arr[i]和基准值temp。这时基准值temp左边的值都比temp小,右边的值都比temp大。
6、分别递归快拍temp的左边和右边的数组。
js实现:
1 var arr = [5,8,7,3,2,4,9,1,10,6]; 2 var n = 9; 3 4 function quicksort(left, right) { 5 var i,j,t,temp; 6 if(left > right) 7 return; 8 i = left; 9 j = right; 10 temp = arr[left]; 11 //两个哨兵不相遇 12 while (i != j){ 13 //对于右哨兵找到一个比标准值temp小的停下 14 while(arr[j] >= temp && i<j){ 15 j--; 16 } 17 //对于左哨兵找到一个比标准值temp大的停下 18 while(arr[i] <= temp && i<j){ 19 i++; 20 } 21 //如果左右哨兵没有相遇,则交换第i和第j个元素的位置 22 if(i < j){ 23 t = arr[i]; 24 arr[i] = arr[j]; 25 arr[j] = t; 26 } 27 } 28 //左右哨兵相遇,将最终基数归位 29 arr[left] = arr[i]; 30 arr[i] = temp; 31 //继续递归左边的处理 32 quicksort(left, i-1); 33 //继续递归处理右边的数组 34 quicksort(i+1, right); 35 } 36 37 quicksort(0,n);
可以将代码复制到浏览器的console.log()里验证一下。
分类:
JavaScript
标签:
快速排序
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具