Java零基础进阶篇之数组|数组的排序

本篇文章讲解的知识点主要围绕数组,废话不多说,只分享Java相关的干货!

冒泡排序

假设有 5 个数字 31625 在一个 int 数组中,要求按从小到大排序输出如何采用冒泡排序算法呢?

冒泡排序的算法是这样的,首先从数组的最左边开始,取出第 0 号位置(左边)的数据和第1号位置(右边)的数据,如果左边的数据大于右边的数据,则进行交换,否而不进行交换。接下来右移一个位置,取出第 1 个位置的数据和第 2 个位置的数据,进行比较,如果左边的数据大于右边的数据,则进行交换,否而不进行交换。沿着这个算法一直排序下去,最大的数就会冒出水面,这就是冒泡排序。

以上示例排序过程如下:

第一遍排序

Java零基础进阶篇之数组|数组的排序_第1张图片

Java零基础进阶篇之数组|数组的排序_第2张图片 

从上面我们看到了比较了 N-1 次,那么第二遍就为 N-2 次比较了,如此类推,比较次数的公式如下:

(N-1) + (N-2)+...+1=((N-1)*N)/2

所以以上总共比较次数为((5-1)*5)/2=10

以上就是冒泡排序算法

public class ArraySortTest01 {

     public static void main(String[] args) {

         int[] data = {3,1,6,2,5};
         for (int i=data.length-1; i>0; i--) 
              { for (int j=0; j data[j+1]) 
                       { int temp = data[j]; 
                       data[j]	= data[j+1]; 
                       data[j+1] = temp;
                  }
         }
      }
      for (int i=0; i

选择排序

选择排序对冒泡排序进行了改进,使交换次数减少,但比较次数仍然没有减少。

假设有 5 个数字 31625 在一个 int 数组中,要求按从小到大排序输出采用选择排序,选择排序是这样的,先从左端开始,找到下标为 0 的元素,然后和后面的元素依次比较,如果找到了比下标 0 小的元素,那么再使用此元素,再接着依次比较,直到比较完成所有的元素,最后把最小的和第 0 个位置交换。

以上示例排序过程如下:

第一遍排序

Java零基础进阶篇之数组|数组的排序_第3张图片
 
Java零基础进阶篇之数组|数组的排序_第4张图片
 
Java零基础进阶篇之数组|数组的排序_第5张图片

 

第二遍排序将从下标为 1 的元素开始,以此类推,经过 N(N-1)/2 次比较,经过 N 次数据交互就完成了所有元素的排序。

【示例代码】

public class ArraySortTest02 {

    public static void main(String[] args) {

        int[] data = {3,1,6,2,5};
        for (int i=0; i

以上就是数组相关的知识点了,配套视频教程,正在学习Java的同学们一定要持续关注哦~~

Java零基础进阶视频教程

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

你可能感兴趣的:(Java学习资料,Java学习视频教程,Java学习者入门必备,算法,java,数据结构,python,排序算法)