快速排序

*)冒泡排序

一共N个数

第一轮:第一个数和第二个对比,大的放到下面;然后,第二个数和第三个数对比,大的放到下面;……对比N个数。此时,第N个数是这组中最大的一个。

第二轮:第一个数和第二个对比,大的放到下面;然后,第二个数和第三个数对比,大的放到下面;……对比前N-1个数。此时,第N-1个数是这组中最大的一个。

……

第K轮:第一个数和第二个对比,大的放到下面;然后,第二个数和第三个数对比,大的放到下面;……对比前N-K+1个数。此时,第N-K+1个数是这组中最大的一个。

一直到最后一轮只有一个数为止。

这个过程,大的数一直在往下沉,小的数一直在网上漂。像冒泡一样。

java程序:

复制代码
 1 /定义临时变量 int temp ; 
 2  
 3 //迚行冒泡排序 
 4 for (int i = 0; i < height.length - 1; i++) {//控制比较多少轮   
 5     for (int j = 0; j < height.length-1-i; j++) {//控制每轮比较次数   
 6         if(height[j] > height[j+1]){ //进行两数交换 
 7             temp = height[j]; 
 8             height[j] = height[j+1]; 
 9             height[j+1] = temp; 
10         } 
11     } 
12 }        
复制代码

 

*)快速排序

快速排序是冒泡排序的改良。

一个头指针low,一个尾指针high,一个枢纽pivot

头指针指向第一个元素,尾指针指向第N个元素,选择一个枢纽(比如第一个元素做枢纽)。头指针向后移动,尾指针向前移动。

步骤:1尾指针的元素和枢纽对比,如果比枢纽小,和枢纽交换位置。2头指针的元素和枢纽对比,如果比枢纽大,和枢纽交换位置。一次交换结束。3.第二次交换,头指针像后移一个,尾指针向前移动一个。然后继续步骤1,2。4.一直到头指针和尾指针指向同一个元素。此时,枢纽前的元素都比它小,枢纽后的元素都比它大。一趟排序结束。

5.第二趟:枢纽前后分成2部分,分别重复1到4的步骤,一直到不能分组为止,整个快速排序结束。

 

posted @   夏天的尾巴%  阅读(136)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示