几种排序算法的java实现

 1 import java.util.Arrays;
 2
 3 /**
 4  * 各种排序算法从小到大进行排序
 5  */
 6 public class Test {
 7
 8     public static void main(String args[]) {
 9         int[] n = { 5, 2, 3, 4, 1 };
10         int[] n1, n2, n3;
11         n1 = n2 = n3 = Arrays.copyOf(n, n.length);
12
13         System.out.println("原来的数组:");
14         printArray(n);
15
16         selectionSort(n1);
17         System.out.println("\n选择排序后:");
18         printArray(n1);
19
20         bubbleSort(n2);
21         System.out.println("\n冒泡排序后:");
22         printArray(n2);
23
24         insertionSort(n3);
25         System.out.println("\n插入排序后:");
26         printArray(n3);
27     }
28
29     /** 选择排序:首先确定的是最小元素 */
30     private static void selectionSort(int number[]) {
31         for (int i = 0; i < number.length - 1; i++) {
32             // 对当前无序区间score[i......length-1]进行排序
33             for (int j = i + 1; j < number.length; j++) {
34                 if (number[i] > number[j]) {
35                     int temp = number[i];
36                     number[i] = number[j];
37                     number[j] = temp;
38                 }
39             }
40
41         }
42     }
43
44     /** 冒泡排序:最先确定的是最大的元素 */
45     private static void bubbleSort(int number[]) {
46         for (int i = 0; i < number.length - 1; i++) {
47             // 对当前无序区间score[0......length-i-1]进行排序
48             for (int j = 0; j < number.length - i - 1; j++) {
49                 if (number[j] > number[j + 1]) {
50                     int temp = number[j];
51                     number[j] = number[j + 1];
52                     number[j + 1] = temp;
53                 }
54             }
55         }
56     }
57
58     /** 插入排序:不断将元素插入到已经排好序的数据(注意插入的顺序) */
59     private static void insertionSort(int[] list) {
60         for (int i = 1; i < list.length; i++) {
61             int currentElement = list[i];
62             // 把list[i]插入到list[0]~list[i-1]之间,这样list[0]~list[i]就排好序了
63             int j;
64             for (j = i - 1; j >= 0 && list[j] > currentElement; j--) {
65                 list[j + 1] = list[j];
66             }
67             // 把当前元素插入到list[j+1]
68             list[j + 1] = currentElement;
69         }
70     }
71
72     /** 打印数组中的元素 */
73     private static void printArray(int number[]) {
74         for (int i : number) {
75             System.out.print(i + "\t");
76         }
77     }
78 }

运行结果:

时间: 2024-10-31 17:34:16

几种排序算法的java实现的相关文章

几种排序算法及Java实现排序的几种方式

几种排序算法 下面的例子介绍了4种排序方法: 冒泡排序, 选择排序, 插入排序, 快速排序 1 package date201709.date20170915; 2 3 public class SortUtil { 4 5 private static int quickSortTimes = 1; 6 7 /** 8 * 冒泡排序:<br> 9 * 两层循环,每次循环比较前后两个元素,如果他们的顺序错误就把他们交换过来,一次循环后最终会把最大的数沉到数列的末端<br> 10 *

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

冒泡排序 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端. 冒泡排序的示例: 冒泡排序的算法实现如下:[排序后,数组从小到大排列] /** * 冒泡排序 * 比较相邻的元素.如果第一个比第二个大,就交换他们两个. * 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一

必须知道的八大种排序算法【java实现】

一.冒泡排序 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端. 冒泡排序的示例: 冒泡排序的算法实现如下:[排序后,数组从小到大排列] /* * 冒泡排序 * 比较相邻的元素.如果第一个比第二个大,就交换他们两个. * 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后

必须知道的八大种排序算法【java实现】(二) 选择排序,插入排序,希尔算法【详解】

一.选择排序 1.基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换:然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止. 2.实例 3.算法实现 /** * 选择排序算法 * 在未排序序列中找到最小元素,存放到排序序列的起始位置 * 再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾. * 以此类推,直到所有元素均排序完毕. * @param numbers */ public static void selectSort(in

必须知道的八大种排序算法【java实现】(三) 归并排序算法、堆排序算法详解

一.归并排序算法 基本思想: 归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的.然后再把有序子序列合并为整体有序序列. 归并排序示例: 合并方法: 设r[i-n]由两个有序子表r[i-m]和r[m+1-n]组成,两个子表长度分别为n-i +1.n-m. j=m+1:k=i:i=i; //置两个子表的起始下标及辅助数组的起始下标 若i>m 或j>n,转⑷ //其中一个子表已合并完,比较选取结束 //选取r[i]和r[j]

博客一,常见的几种排序算法的Java实现

一.插入排序 算法导论上有很形象的比喻,把插入排序类比成扑克牌,默认你手里本身拥有的第一张是有序的,第二章和第一张对比后决定其位置,以此类推.代码如下: 1 public class InsertSort { 2 public void insertSort(int[] a){ 3 if(a==null||a.length==0||a.length==1){ 4 return ; 5 } 6 //i代表已有序的数组元素的边界, 7 for(int i = 0 ; i<a.length-1 ;i+

7种基本排序算法的Java实现

7种基本排序算法的Java实现 转自我的Github 以下为7种基本排序算法的Java实现,以及复杂度和稳定性的相关信息. 以下为代码片段,完整的代码见Sort.java 插入排序 1 /** 2 * 直接插入排序 3 * 不稳定 4 * 时间复杂度:O(n^2) 5 * 最差时间复杂度:O(n^2) 6 * 空间复杂度:O(1) 7 * 使用场景:大部分元素有序 8 * @param elements 9 * @param comparator 10 * @param <T> 11 */ 1

学习Java绝对要懂的,Java编程中最常用的几种排序算法!

今天给大家分享一下Java中几种常见的排序算法的Java代码 推荐一下我的Java学习羊君前616,中959,最后444.把数字串联起来!     ,群里有免费的学习视频和项目给大家练手.大神有空时也会带带大家的,学Java的过程中一定要多问多记,不要怕问题,要去主动的解决问题. 冒泡排序 选择排序 插入排序 归并排序 例如:降序排{10,5,9,6}分为{10,5},{9,6}然后{5,10},{6,9}然后完成 快速排序 就最后一个快速排序可能大家看不太懂,我就举个例子吧 开始输入以下数组

Java常见的几种排序算法-插入、选择、冒泡、快排、堆排等

本文就是介绍一些常见的排序算法.排序是一个非常常见的应用场景,很多时候,我们需要根据自己需要排序的数据类型,来自定义排序算法,但是,在这里,我们只介绍这些基础排序算法,包括:插入排序.选择排序.冒泡排序.快速排序(重点).堆排序.归并排序等等.看下图: 给定数组:int data[] = {9,2,7,19,100,97,63,208,55,78} 一.直接插入排序(内部排序.O(n2).稳定) 原理:从待排序的数中选出一个来,插入到前面的合适位置. [java] view plain copy