关于Sort排序与冒泡法的区别

本文对比分析了快速排序和冒泡法的原理及实现,通过实例展示了两种排序算法的过程。快速排序采用分治策略,通过选取基准元素划分数组,而冒泡法通过反复交换相邻元素实现排序。文中提供了两种排序算法的Java代码实现,并指出快速排序在效率上的优势。
摘要由CSDN通过智能技术生成

Sort排序和冒泡法的异同

 

对数组a{2,4,3,6,2,8,1}进行排序。

快速排序法

原理:

对于数组a{2,4,3,6,2,8,1}

①  需要选取一个关键元素作为基准元素key,用数组内所有元素跟基准元素比较大小

②  先假设数组内第一个元素的角标为i,最后一个元素角标为j

③  先将数组元素最后一个元素跟基准元素比较,若a[j]>key,则j--,直到a[j]<key,然后进行交换,大的放后面,小的放前面。接着进行第④步;

④  将数组元素第一个元素与基准元素比较,所a[i]<key,则i++,直到a[i]>key,然后进行交换。

⑤  重复③④步,直到i==j,第一趟比较结束。(第一趟比较结束时,基准元素key一般在数组元素的中间位置,然后以基准元素key为中轴,将数组划分为两个子数组,key左边的子数组都小于key,右边的子数组都大于key.)

注:若key为数组元素的最小值,第一趟比较结束时,只比较key右边的子数组,再重新选子数组的基准元素key1,然后进行比较。

若数组为空时,则输出一个空的序列。

若数组不合法时,也输出空序列。

关键点:1.找基准元素;

通常选取数组内第一个元素为基准元素;

     2. 设第一个元素角标为i;

设最后一个元素角标为j;

       3.先由后往前跟基准元素比较,在右前往后比较;

       4.划分子数组。

关于代码:

代码一: 

package shuzu;

 

public classQuickSort {

     public voidsort(int[] arras,intlow,inthigh) {    

         int i=low;

         int j=high;

         if(i>j){

             /*使用了快速排序

             arras:要排序的数组

             low:数组的开始下标

             high:数组的末尾下标

             */

             return;

         }

         int key=arras[low]; //选基准元素(一般都数组内第一个元素)

         while(true){      //让一趟里面全部元素比较完毕

             while(j>i){   //j角标开始往前比较

                 if(arras[j]<key){  //交换

                     

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值