快速排序算法和冒泡排序算法的java实现
2014-07-22 10:59
375 查看
快速排序算法是对冒泡排序的改良,所谓冒泡排序,它一次比较前后两个元素,如果这两个元素不符合规则便交换它们的位置,这样直到遍历完所有的元素为止。
快速排序算法的基本思想是分而治之,即将待排序数据按照大小分为两部分然后对两部分进行排序,递归此过程最终实现排序。
下面是这两种排序算法的java代码实现:
快速排序算法的基本思想是分而治之,即将待排序数据按照大小分为两部分然后对两部分进行排序,递归此过程最终实现排序。
下面是这两种排序算法的java代码实现:
/** * *快速排序算法 *冒泡排序算法 * **/ public class QuickSort{ //两个算法的数据交换次数 private static int quickSortCount=0; private static int bubbleSortCount=0; /** *快速排序算法 *将要排序的数据通过一次排序分割成两部分,其中一部分的数据要比另一部分的所有数据小, *然后再按照这样的方法分别对两部分数据进行快速排序。 *@prameter data,待排序的数据 *@prameter left,data的左边开始的索引 *@prameter right,data的右边开始的索引 **/ public static void quickSort(int[] data, int left, int right){ if(data==null||data.length<2||left>right){return;} int i=left; int j=right; int mid=data[(i+j)/2]; do{ while(data[i]<mid&&i<right) i++;//从左端开始遍历,查找比mid大的数据的索引 while(data[j]>mid&&j>left) j--;//从友端开始遍历,查找比mid小的数据的索引 if(i<=j){//把比mid大的数据和比mid小的数据交换位置,同时将两边的索引向中间移动 int temp=data[i]; data[i]=data[j]; data[j]=temp; i++; j--; quickSortCount++; } }while(i<=j);//循环结束后根据i和j的值,数据被分为大小不同的量部分 if(i<right){//递归调用sort方法,给上面while循环后的i到right的数据排序 quickSort(data,i,right); } if(j>left){//递归调用sort方法,给上面while循环后的left到j的数据排序 quickSort(data,left,j); } } /** *冒泡排序算法 *@prameter data,待排序的数据 **/ public static void bubbleSort(int[] data){ int count=0; for(int i=0;i<data.length-1;i++){ for(int j=i+1;j<data.length;j++){ if(data[i]>data[j]){ int temp=data[i]; data[i]=data[j]; data[j]=temp; bubbleSortCount++; } } } } public static void main(String[] a){//对排序方法进行测试 int[] data=new int[]{1,2,9,4,6,3,7,8,5,10,23,3,5,1}; bubbleSort(data); System.out.println("bubbleSortCount = "+bubbleSortCount); for(int i=0;i<data.length;i++){ System.out.print(data[i]+"-"); } System.out.println(); data=new int[]{1,2,9,4,6,3,7,8,5,10,23,3,5,1}; quickSort(data,0,data.length-1); System.out.println("quickSortCount = "+quickSortCount); for(int i=0;i<data.length;i++){ System.out.print(data[i]+"-"); } } }这里待排序的数据是一个整形数组。当然,你也可以对实现了比较规则的任意对象进行排序。
相关文章推荐
- 利用java实现数据结构中常用的插入排序和快速排序算法
- 快速排序算法的JAVA实现
- 冒泡排序算法的java实现
- 快速排序算法原理及java递归实现
- 快速排序算法JAVA实现
- 冒泡排序算法的JAVA实现
- 快速排序算法的Java实现
- 利用java实现数据结构中常用的插入排序和快速排序算法
- 冒泡排序算法的JAVA实现
- 冒泡排序算法(C & Java 实现)
- 冒泡排序算法的JAVA实现
- 冒泡排序算法的JAVA实现
- 快速排序算法的JAVA实现
- java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排序算法的描述
- 用java实现快速排序算法
- 冒泡排序算法的JAVA实现
- 利用java实现数据结构中常用的插入排序和快速排序算法
- java实现快速排序算法
- 用java实现冒泡排序算法
- 快速排序算法(C & Java 实现)