400-685-0732 电话咨询定制营销方案
关注专业seo外包公司
SEO创新会
文军营销
大数据驱动  让营销不走弯路
首页  >   工具使用  >  数组排序 数组排序如何实现

数组排序 数组排序如何实现

在运用java过程当中,有时需要对数组进行排序,而排序的方式主要有四种,分别是冒泡法,选择排序法,快速排序法以及插入排序法,那这四种排序法具有哪些特点呢?又该如何实现呢?接下来我们就一起来好好的了解一下吧。

  数组排序——数组排序方法的优缺点分析

一、冒泡排序

已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列。首先比较a[1]与a[2]的值,若a[1]大于a[2]则交换两者的值,否则不变。再比较a[2]与a[3]的值,若a[2]大于a[3]则交换两者的值,否则不变。再比较a[3]与a[4],以此类推,最后比较a[n-1]与a[n]的值。这样处理一轮后,a[n]的值一定是这组数据中最大的。再对a[1]~a[n-1]以相同方法处理一轮,则a[n-1]的值一定是a[1]~a[n-1]中最大的。再对a[1]~a[n-2]以相同方法处理一轮,以此类推。共处理n-1轮后a[1]、a[2]、……a[n]就以升序排列了。

优点:稳定;

缺点:慢,每次只能移动相邻两个数据。

二、选择排序

冒泡排序的改进版。

每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。

选择排序是不稳定的排序方法。

n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果:

①初始状态:无序区为R[1..n],有序区为空。

②第1趟排序

在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[1..1]和R[2..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。

……

③第i趟排序

第i趟排序开始时,当前有序区和无序区分别为R[1..i-1]和R(1≤i≤n-1)。该趟排序从当前无序区中选出关键字最小的记录R[k],将它与无序区的第1个记录R交换,使R[1..i]和R分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。

这样,n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果。

优点:移动数据的次数已知(n-1次);

缺点:比较次数多。

三、插入排序

已知一组升序排列数据a[1]、a[2]、……a[n],一组无序数据b[1]、b[2]、……b[m],需将二者合并成一个升序数列。首先比较b[1]与a[1]的值,若b[1]大于a[1],则跳过,比较b[1]与a[2]的值,若b[1]仍然大于a[2],则继续跳过,直到b[1]小于a数组中某一数据a[x],则将a[x]~a[n]分别向后移动一位,将b[1]插入到原来a[x]的位置这就完成了b[1]的插入。b[2]~b[m]用相同方法插入。(若无数组a,可将b[1]当作n=1的数组a)

优点:稳定,快;

缺点:比较次数不一定,比较次数越少,插入点后的数据移动越多,特别是当数据总量庞大的时候,但用链表可以解决这个问题。

四、快速排序

快速排序是目前已知的最快的排序方法。

已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列。首先任取数据a[x]作为基准。比较a[x]与其它数据并排序,使a[x]排在数据的第k位,并且使a[1]~a[k-1]中的每一个数据a[x],然后采用分治的策略分别对a[1]~a[k-1]和a[k+1]~a[n]两组数据进行快速排序。

优点:极快,数据移动少;

缺点:不稳定。

  数组排序方法案例

1.利用Arrays带有的排序方法快速排序

importjava.util.Arrays;2publicclassTest2{

publicstaticvoidmain(String[]args){

int[]a={5,4,2,4,9,1};

Arrays.sort(a);//进行排序

for(inti:a){

System.out.print(i);

}

}

}

2.冒泡排序算法

publicstaticint[]bubbleSort(int[]args){//冒泡排序算法

for(inti=0;i

for(intj=i+1;j

if(args[i]>args[j]){

inttemp=args[i];

args[i]=args[j];

args[j]=temp;

}

}

}

returnargs;

}

3.选择排序算法

publicstaticint[]selectSort(int[]args){//选择排序算法

for(inti=0;i

intmin=i;

for(intj=i+1;j

if(args[min]>args[j]){

min=j;

}

}

if(min!=i){

inttemp=args[i];

args[i]=args[min];

args[min]=temp;

}

}

returnargs;

}

4.插入排序算法

publicstaticint[]insertSort(int[]args){//插入排序算法

for(inti=1;i

for(intj=i;j>0;j–){

if(args[j]

inttemp=args[j-1];

args[j-1]=args[j];

args[j]=temp;

}elsebreak;

}

}

returnargs;

}

以上就是有关数组排序如何操作以及有哪些优缺点的所有内容,这四种方法因为各有各自的优势和缺点,因此在使用的过程当中,大家就一定要做好选择。如果大家还想了解更多与之有关的内容,欢迎关注我们文军营销的官网。

推荐阅读

手机wps表格的基本操作 手机wps表格有哪些基本的操作 | 文军营销上一篇: 如何在excel中设置下拉选项 下拉选项的设置方法 下一篇: 数组排序 数组排序如何实现 最新文章 toolkit使用方法 toolkit使用方法是什么 sleep函数 sleep函数...图片怎么去水印 去除水印的简单方法介绍 | 文军营销在一般情况下,我们去除图片上的水印是通过ps来操作,接下来我们就来看一看如何...数组排序 数组排序如何实现 手机wps表格的基本操作 手机wps表格有哪些基本的操作 ...Excel数组公式 excel中vlookup数组 | 文军营销Excel数组公式 excel中vlookup数组,听说excel的教程在抖音很火,很多白领小朋友都在争相学习,下面就跟小编一起学习一下excel中vlookup数组的新技能吧,Excel数组公式 ...