常用排序算法的Java实现 - 1

学习编程语言时, 我们会接触到许多排序算法, 这里总结了一下常见的排序算法. 不定期更新.

* 其实在Java中存在如Collections.sort()这样的方法来自动为我们排序, 不过学习排序算法能让我们更好的理解一门编程语言.

1. 冒泡排序:

该算法是最基本也是最有名的算法之一了.

 1 public static void bubbleSort(int[] arr) {
 2     for(int i = 0; i < arr.length - 1; i++) {
 3         for(j = 0; j < arr.length - 1 - i; j++) {
 4             if(arr[j] > arr[j + 1]) {
 5                 int t = arr[j];
 6                 arr[j] = arr[j + 1];
 7                 arr[j + 1] = t;
 8             }
 9         }
10     }
11 }

说明: 该算法的思想是数组的前一个元素与其后一个元素比较, 如果前一个元素较大, 就交换两个元素的值, 这样第一轮比较完最大的元素就位于数组最后的位置上了, 即arr[arr.length-1]; 第二轮就是除了最后一个元素之外所有元素再次比较, 找出第二大的数. 以此类推.

2. 选择排序:

该算法知名度与冒泡排序相当.

 1 public static void selectSort(int[] arr) {
 2     for(int i = 0; i < arr.length - 1; i++) {
 3         for(int j = i + 1; j < arr.length; j++) {
 4             if(arr[i] > arr[j]) {
 5                 int t = arr[i];
 6                 arr[i] = arr[j];
 7                 arr[j] = t;
 8             }
 9         }
10     }
11 }

说明: 该算法的思想就是数组的第一个元素依次与其后的所有元素比较, 如果该元素较大, 就交换两个元素的值, 这样第一轮比较完最大的元素就位于数组最后的位置上了, 即arr[arr.length-1]; 然后是第二个元素与其后的所有元素比较. 以此类推.

时间: 2024-08-08 13:55:58

常用排序算法的Java实现 - 1的相关文章

常用排序算法总结---Java实现

各个排序总结,以及时间,空间复杂度分析 一.冒泡排序: /* 冒泡排序: 排序算法思想:进行n-1趟排序,每趟,相邻元素,两两相互比较,将其中如果前一个元素比后一个元素小 则令其交换.(最后的结果是,小的往后移(从大到小的冒泡)) */ class BubleSort { public static void main(String[] args) { int[] arr = {1,4,6,3,7,4,9,8}; bSort_1(arr); for (int a: arr) { System.o

常用排序算法及Java实现

排序算法,可以分为内部排序和外部排序两大种.这篇文章主要对内部排序进行介绍.内部排序又分为两类,基于比较的非线性时间类,和非比较的线性时间类.前一类又可以分为四种,交换排序(包括冒泡排序和快速排序),插入排序(包括简单插入排序和希尔排序),选择排序(包括简单选择排序和堆排序)以及归并排序:后者主要包含三种,计数排序,桶排序和基数排序. 总体来说,快排.堆排和归并排序是非线性时间中最快的三种.一般认为,快排的时间效率会比堆排更好.另一方面,快排和堆排都是不稳定的算法,只有归并排序.冒泡排序和插入排

插入排序,选择排序,冒泡排序等常用排序算法(java实现)

  package org.webdriver.autotest.Study; import java.util.*; public class sort_examp{  public static void main(String[] args)  {   Integer[] num={49,38,65,97,76,13,27,49,78,34,12,64,1};   //insertsort(num);   //selectsort(num);   maopaosort(num);     

几大排序算法的Java实现

很多的面试题都问到了排序算法,中间的算法和思想比较重要,这边我选择了5种常用排序算法并用Java进行了实现.自己写一个模板已防以后面试用到.大家可以看过算法之后,自己去实现一下. 1.冒泡排序:大数向下沉,小数向上浮. package TestProject; /** * 冒泡排序 * @author xuhui * */ public class SortAll { public static void main(String[] args){ int[] a = {0,8,1,2,8,6,1

Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法

Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配排序(基数排序) 所需辅助空间最多:归并排序 所需辅助空间最少:堆排序 平均速度最快:快速排序 不稳定:快速排序,希尔排序,堆排序. 先来看看 8种排序之间的关系: 1.直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2]

Java 常用排序算法/程序员必须掌握的 8大排序算法

Java 常用排序算法/程序员必须掌握的 8大排序算法 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配排序(基数排序) 所需辅助空间最多:归并排序 所需辅助空间最少:堆排序 平均速度最快:快速排序 不稳定:快速排序,希尔排序,堆排序. 先来看看 8种排序之间的关系: 1.直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排 好顺序的,现在要把第n 个数插到前

[转]各种排序算法及其java程序实现

原文:http://blog.csdn.net/t12x3456/article/details/7430700 各种排序算法:冒择路(入)兮(稀)快归堆,桶式排序,基数排序 冒泡排序,选择排序,插入排序,稀尔排序,快速排序,归并排序,堆排序,桶式排序,基数排序 一.冒泡排序(BubbleSort)1. 基本思想: 两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据元素为止.2. 排序过程: 设想被排序的数组R[1..N]垂直竖立,将每个数据元素看作有重量的

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

常用排序算法比较与分析

一.常用排序算法简述 下面主要从排序算法的基本概念.原理出发,分别从算法的时间复杂度.空间复杂度.算法的稳定性和速度等方面进行分析比较.依据待排序的问题大小(记录数量 n)的不同,排序过程中需要的存储器空间也不同,由此将排序算法分为两大类:[内排序].[外排序]. 内排序:指排序时数据元素全部存放在计算机的随机存储器RAM中. 外排序:待排序记录的数量很大,以致内存一次不能容纳全部记录,在排序过程中还需要对外存进行访问的排序过程. 先了解一下常见排序算法的分类关系(见图1-1) 图1-1 常见排