前两天我们介绍了冒泡排序和选择排序,今天介绍一个相比前两种排序效率更高的排序方式,快速排序,如果没有看过前面两篇文章,读者可以翻阅小编以前的文章,下面开始介绍快速排序。
它的基本思想是:每次排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再对这两部分进行排序,多次循环,最终排序成功。
举例说明:假如有一个数组int arr={56,2,44,1,98,55,3,555,4},初始i=0,j=8,基准值=arr[0],取之一数56为基准值。我们形象点理解就是把基准值拿出来,那么0哪个位置为空,{空,2,44,1,98,55,3,555,4}。
之一轮:从j=8开始看找小于56的数,j=8时为4就符合,那么这是把4拿出来放到空的地方,那么4这个地方就为空了,{4,2,44,1,98,55,3,555,空},后面找到之后i=0是坑了,所以应该把i向右移一位,此时i=1,j=8,然后从左找大于56的,我们可以发现98符合,和刚才一样,把98拿出来变成空,把98放到原来空的地方。{4,2,44,1,空,55,3,555,98},j要像左移一位,此时i=4,j=7之一轮完成。
第二轮:从j=7像左查找小于56的,我们发现3符合,此时数组为{4,2,44,1,3,55,空,555,98}i=5,j=6,从i=5像右找大于56,发现在i
下面给出代码的图片形式和文本形式,方便浏览和复制
public class Kuai {
public static void main(String args[]){
int [] arr={56,2,44,1,98,55,3,555,4};//定义一个数组
fangfa(arr,0,arr.length-1);//调用快速排序 ***
for(int a:arr){//遍历结果
System.out.print(a+",");
}
}
public static void fangfa(int [] arr,int i,int j){//数组,区域的最小指针和更大指针
if(i
int tou=i;
int wei=j;//i和j老变化,记住他们,tou和wei
int x=arr[tou]; //永远把最前面的那个数记为x
while(i
while(arr[j]>x&&ix,就说明符合快速排序,后面的值为更大的
j--;//把后面的索引来来 *** 的--
}
if(i
arr[i]=arr[j];//此时j这个位置变成坑,把i向右移一位
i++;
}
while(arr[i]
i++;
}
if(i
arr[j]=arr[i];
j--;
}//while运行结束表示之一轮完成,i==j或者i>j了,此时应该一分为二,并把x放入最后一个坑x
}//这样坑就被填平了,此时再次调用 *** ,一份为二,调用第二轮,以此类推直到,每一轮只剩下
arr[i]=x; //一个元素为止就成功了
fangfa(arr,tou,i-1);//再次调用用递归
fangfa(arr,j+1,wei);
}
}
}
学习算法,编程本身就是枯燥的,但是你能够坚持下来,你就成功了,那么你准备好了吗?如果喜欢就请点个赞吧。
由抖音和奇遇文化共同出品的首档“所有格”纪实真人秀《很高兴认识你》长综艺第四期如期而至。周迅、阿雅和嘉宾姚晨组成新的队伍,来到人杰地灵的福州,在素人嘉宾《HOMELAND家园》杂志主编许灵怡的带领下前...
外界对全球最富盛名的豪华SUV品牌路虎既有拥有的渴望,也有担忧,路虎品质靠不靠谱?这大概是很多想买SUV人的疑问,但这个疑问的答案在网络上一直模棱两可,众说纷纭。球叔唯一能回答的是作为路虎揽胜极光的车...
. 如果给宝宝用的沐浴露泡泡很多就很难清洗,那么丝塔芙婴幼儿沐浴洗发二合一洗起来感觉如何呢,会不会有太多的泡泡,友谊长存小编就来说说使用了丝塔芙婴幼儿沐浴洗发二合一的感受吧。 宝贝整体 丝塔芙这...
利润很高的5种街头小吃,成本不到一块钱,但卖价却翻了5倍10倍! 相信很多人都对路边小吃都有一种特殊爱好,明明知道很多路边小吃都是三无产品,各种不健康不卫生还是忍不住去买来吃,禁不住那阵阵传来的香味...
众所周知,拍一部电视剧的成本是很高的,首先是剧中的服化道,想要精益求精就必须花上大价钱,其次就是演员的片酬,网上被曝出几千万甚至上亿的都有,还有其他工作人员要发工资,总的来说,成本不计其数,可是拍电视...
早春将至,“大一号”穿搭,显现慵懒随性感觉,像午后暖阳,温馨且美妙。 卫衣:一年四季中不可缺少的时尚代表,拥有很高的包容度; 棒球服:碰撞出不一样的烟火,无论男性、女性,年轻活力,身姿曼妙...