介绍
一文教你在Java中实现一个冒泡排序和快速排序?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
冒泡排序是一种简单的排序算法。它重复地走访过要排序的数,列一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
冒泡排序的算法实现如下:【排序后,数组从小到大排列】
/* * *查找出中轴(默认是最低位低)的在数字数组排序后所在位置 * * @param数字带查找数组 * @param低开始位置 * @param高结束位置 * @return中轴所在位置 */公共静态int getMiddle (int[]数字,int, int高) { int temp=数字(低);//数组的第一个作为中轴 而(低& lt;高) { 而(低& lt;高,,数字(高)比;临时) { 高,; } 数字(低)=数字(高);//比中轴小的记录移到低端 而(低& lt;高,,数字(低)& lt;临时) { 低+ +; } (高)=号码(低);//比中轴大的记录移到高端 } 数字(低)=temp;//中轴记录到尾 返回低;//返回中轴的位置 }
2,递归形式的分治排序算法:
/* * *快速排序 * @param数字带排序数组 */公共静态真空快速(int[]号) { 如果(数字。长度比;0)//查看数组是否为空 { 快速排序(数字,0,numbers.length-1); } }
分析:
快速排序是通常被认为在同数量级(O (nlog2n))的排序方法中平均性能最好的。但若初始序列按关键码有序或基本有序时,快排序反而蜕化为冒泡排序。为改进之,通常以“三者取中法”来选取基准记录,即将排序区间的两个端点与中点三个记录关键码居中的调整为支点记录。快速排序是一个不稳定的排序方法。
打印函数:
公共静态孔隙printArr (int[]号) { for (int i=0;我& lt;数字。长度;我+ +) { system . out。print(数字[我]+“,“); } System.out.println (“;”); }
测试:
公共静态void main (String [] args) { int[]数字={0,10年,20年,15日,6日,7日,2、1、5、55}; System.out.print(“排序前:“); printArr(数字); bubbleSort(数字); System.out.print(“冒泡排序后:“); printArr(数字); 快速(数字); System.out.print(“快速排序后:“); printArr(数字); }一文教你在Java中实现一个冒泡排序和快速排序