星空网 > 软件开发 > Java

必须知道的八大种排序算法【java实现】(一) 冒泡排序、快速排序

冒泡排序

  冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

  冒泡排序的示例

 必须知道的八大种排序算法【java实现】(一) 冒泡排序、快速排序

冒泡排序的算法实现如下:【排序后,数组从小到大排列】

   /**   * 冒泡排序   * 比较相邻的元素。如果第一个比第二个大,就交换他们两个。    * 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。    * 针对所有的元素重复以上的步骤,除了最后一个。   * 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。   * @param numbers 需要排序的整型数组   */  public   static void bubbleSort(int[] numbers)  {    int temp; //记录临时中间值    int size = numbers.length; //数组大小    for(int i = 0 ; i < size - 1 ; i++)    {    for(int j = i + 1 ; j < size ; j ++)    {      if(numbers[i] > numbers[j]) //交换两数位置      {      temp = numbers[i];      numbers[i] = numbers[j];      numbers[j] = temp;      }    }    }  }

 


 

快速排序

快速排序的基本思想

         通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小,则分别对这两部分继续进行排序,直到整个序列有序。

快速排序的示例

(a)一趟排序的过程:

必须知道的八大种排序算法【java实现】(一) 冒泡排序、快速排序

(b)排序的全过程

必须知道的八大种排序算法【java实现】(一) 冒泡排序、快速排序

  把整个序列看做一个数组,把第零个位置看做中轴,和最后一个比,如果比它小交换,比它大不做任何处理;交换了以后再和小的那端比,比它小不交换,比他大交换。这样循环往复,一趟排序完成,左边就是比中轴小的,右边就是比中轴大的,然后再用分治法,分别对这两个独立的数组进行排序。

 

代码实现如下:

1.查找中轴(最低位作为中轴)所在位置

   /**   * 查找出中轴(默认是最低位low)的在numbers数组排序后所在位置   *   * @param numbers 带查找数组   * @param low  开始位置   * @param high 结束位置   * @return 中轴所在位置   */  public static int getMiddle(int[] numbers, int low,int high)  {    int temp = numbers[low]; //数组的第一个作为中轴    while(low < high)    {    while(low < high && numbers[high] > temp)    {      high--;    }    numbers[low] = numbers[high];//比中轴小的记录移到低端    while(low < high && numbers[low] < temp)    {      low++;    }    numbers[high] = numbers[low] ; //比中轴大的记录移到高端    }    numbers[low] = temp ; //中轴记录到尾    return low ; // 返回中轴的位置  }

 

2、 递归形式的分治排序算法:

   /**   *   * @param numbers 带排序数组   * @param low 开始位置   * @param high 结束位置   */  public static void quickSort(int[] numbers,int low,int high)  {    if(low < high)    {      int middle = getMiddle(numbers,low,high); //将numbers数组进行一分为二      quickSort(numbers, low, middle-1);  //对低字段表进行递归排序      quickSort(numbers, middle+1, high); //对高字段表进行递归排序    }    }

 

3、快速排序提供方法调用

   /**   * 快速排序   * @param numbers 带排序数组   */  public static void quick(int[] numbers)  {    if(numbers.length > 0)  //查看数组是否为空    {    quickSort(numbers, 0, numbers.length-1);    }  }

 


 

 方法测试

打印函数

  public static void printArr(int[] numbers)  {    for(int i = 0 ; i < numbers.length ; i ++ )    {    System.out.print(numbers[i] + ",");    }    System.out.println("");  }

 

测试:

  public static void main(String[] args)   {    int[] numbers = {10,20,15,0,6,7,2,1,-5,55};    System.out.print("排序前:");    printArr(numbers);        bubbleSort(numbers);    System.out.print("冒泡排序后:");    printArr(numbers);            quick(numbers);    System.out.print("快速排序后:");    printArr(numbers);  }

 

结果:

排序前:10,20,15,0,6,7,2,1,-5,55,冒泡排序后:-5,0,1,2,6,7,10,15,20,55,快速排序后:-5,0,1,2,6,7,10,15,20,55,

 

   

  致谢:感谢您的耐心阅读!




原标题:必须知道的八大种排序算法【java实现】(一) 冒泡排序、快速排序

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

为什么大企业都要做VIE架构,什么是VIE架构呢?有哪些优势呢?:https://www.kjdsnews.com/a/1601914.html
消费类电子产品行业:科技创新和市场需求共舞:https://www.kjdsnews.com/a/1601915.html
亚马逊前置评论板块!赋予产品评论更大权重:https://www.kjdsnews.com/a/1601916.html
短视频直播成交话术攻略:https://www.kjdsnews.com/a/1601917.html
2023深圳进出口贸易博览会六大亮点抢先看!:https://www.kjdsnews.com/a/1601918.html
职业跟卖开直播收徒!投诉致品牌滥用?上狠招!:https://www.kjdsnews.com/a/1601919.html
湘西游轮六 湘江游轮夜游:https://www.vstour.cn/a/411226.html
携程旅游网折扣优惠最新攻略(携程旅游网更佳折扣优惠):https://www.vstour.cn/a/411227.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流