java中简单的排序算法示例

  介绍

这篇文章给大家分享的是有关java中简单的排序算法示例的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。

算法也是一个争论了很久的话题,程序员到底该不该掌握算法?不同的人有不同的答案,而事实上,很多公司都对算法有一定的要求,有些公司直接在面试的时候便会要求面试者手写算法题。这就对程序员的技术要求产生了很大的考验,所以面对如今的大环境,我们必须掌握算法,才能在今后的工作中占据一席之地。

那么接下来,我就简单介绍一下几个排序算法,希望对你们有所帮助。

<强>冒泡排序

冒泡排序(冒泡排序),是一种较简单的排序算法。

它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小,首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。

这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

演示:

癹ava中简单的排序算法示例"

代码如下:

@Test   公共空间bubbleSort () {   int [] arr={3, 44岁,38岁,5,47岁,15岁,36岁,26日,27日,2,46岁,4日,19日,50岁,48个};//统计比较次数   int数=0;//第一轮比较   for (int i=0;我& lt;加勒比海盗。长度- 1;我+ +){   布尔标志=true;//第二轮比较   for (int j=0;j & lt;加勒比海盗。长度- 1——我;j + +) {   如果(arr [j]比;加勒比海盗[j + 1]) {//交换位置   int temp=arr [j];   arr [j]=arr [j + 1);   加勒比海盗[j + 1)=temp;   }   数+ +;   }   }   System.out.println (Arrays.toString (arr));   System.out.println(“一共比较了:“+数+“次”);   }

运行结果:

[2、3、4、5、15、19日,26日,27日,36岁,38岁,44岁,46岁,47岁,48岁,50)   一共比较了:105次

<强>选择排序

选择排序(选择排序)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。

演示:

癹ava中简单的排序算法示例"

代码如下:

@Test   公共空间SelectionSort () {   int [] arr={3, 44岁,38岁,5,47岁,15岁,36岁,26日,27日,2,46岁,4日,19日,50岁,48个};   for (int i=0;我& lt;加勒比海盗。长度- 1;我+ +){   int指数=我;   for (int j=1 + i;j & lt;arr.length;j + +) {   如果(arr [j] & lt;加勒比海盗(指数)){   指数=j;//保存最小元素的下标   }   }//此时已经找到最小元素的下标//将最小元素与前面的元素交换   int temp=arr(指数);   arr(指数)=arr[我];   加勒比海盗[我]=temp;   }   System.out.println (Arrays.toString (arr));   }

运行结果:

[2、3、4、5、15、19日,26日,27日,36岁,38岁,44岁,46岁,47岁,48岁,50)

实现也非常的简单,首先在外循环里定义了一个指数变量存我的储值,这是为了避免重复地比较,因为在每一轮的比较结束后,前我个元素是已经排好序的,所以无需再次比较,只需从我开始即可。后面的比较都是基于指数位置的元素进行比较,倘若比较完后指数位置的元素是最小值,那就无需交换,不动即可。而如果找到了比指数位置的元素更小的元素,那就将该元素的索引赋值给指数,然后继续比较,直到比较完成,比较完成之后得到的指数即为数组中的最小值,那此时只需要将索引位置的元素和我位置的元素交换即可。

<>强插入排序

插入排序(插入排序)是一种简单直观且稳定的排序算法。如果有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的,个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O (n ^ 2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中。

java中简单的排序算法示例