1.冒泡排序 (相邻元素相互比较,如有n个元素,需要n-1次比较)
public class BubbleSort{
public static void main (String[ ] args){
int array[ ] = new int[5];
array[0] =1;
array[1] = 0;
array[2] = 2;
array[3] = 4;
array[4] = 3;
for(int i =0;i<array.length ;i++){
for( int j =i+1;j<array.length;j++){
if(array[i]>array[j]){ //如果不需要升序排列,可以这样写array [i]< array [j]
int temp = array[j];
array[j] = array[i];
array [i] = temp;
}
for ( int t ; array){
system.out.println( ‘t =' +t);
}
}
}
}
2.选择排序(基本思路: 从所有元素中选择一个最小元素 a[i]放在 a[0] (即让最小元素 a[i] 与 a[0]
交换) , 作为第一轮; 第二轮是从 a[1]开始到最后的各个元素中选择一个最小元素, 放在 a[1]
中;……依次类推。n 个数要进行(n-1)轮。比较的次数与冒泡法一样多,但是在每一轮
中只进行一次交换,比冒泡法的交换次数少,相对于冒泡法效率高。)
public class SelectionSort{
public static void main (String[] args){
int array[] = new int[5];
array[0] = 4;
array[1] = 5;
array[2] = 1;
array[3] = 3;
array[4] = 2;
int temp ;
for (int i = 0;i<array.length ;i++){
int lowIndex =i;
for(int j = i+1;j<array.length;j++){
if (array[j]<array[lowIndex]){
lowIndex = j;
}
}
temp = array[i];
array[i] = array[lowIndex];
array[lowIndex] = temp;
}
for(int i :array){
System.out.println("t="+i);
}
}
}
3:插入法排序
基本思路: 每拿到一个元素, 都要将这个元素与所有它之前的元素遍历比较一遍, 让符
合排序顺序的元素挨个移动到当前范围内它最应该出现的位置。
举个例子来说, 就用前面的数组, 我们要对一个有 5 个元素的数组进行升序排列, 假设
第一个元素的值被假定为已排好序了,那么我们就将第 2 个元素与数组中的部分进行比较,
如果第 2 个元素的值较小,则将它插入到第 1 个元素的前面,现在就有两个元素排好序了,
我们再将没有排序的元素与排好序的元素列表进行比较, 同样,如果小于第一个元素,就将
它插入到第一个元素前面, 但是,如果大于第一个元素的话, 我们就将它再与第 2 个元素的
值进行比较, 小于的话就排在第 2 个元素前面,大于的话,就排在第 2 个元素的后面。 以此
类推,直到最后一个元素排好序。
public classInsert {
public static void main(String[] args) {
// 需要排序的数组,目前是按照升序排列的
int a[] = new int[5];
a[0] = 3;
a[1] = 4;
a[2] = 1;
a[3] = 5;
a[4] = 2;
// 插入法排序
int temp;
for(int i = 1; i < a.length; i++) {// i=1开始,因为第一个元素认为
//是已经排好序了的
for(int j = i; (j > 0) && (a[j] < a[j - 1]); j--) {
//交换
temp = a[j];
a[j] = a[j - 1];
a[j - 1] = temp;
}
}
// 检测一下排序的结果
for(int i : a) {
System.out.println("i="+ i);
}
}
}
4:希尔(Shell)法排序
public class Test {
public static void main(String[] args) {
// 需要排序的数组,目前是按照升序排列的
int a[] = new int[5];
a[0] = 3;
a[1] = 4;
a[2] = 1;
a[3] = 5;
a[4] = 2;
// shell法排序
int j = 0;
int temp = 0;
//分组
for(int increment = a.length / 2; increment > 0; increment /= 2)
{
//每个组内排序
for(int i = increment; i < a.length; i++) {
temp = a[i];
for(j = i; j >= increment; j -= increment) {
if(temp < a[j - increment]){
a[j] = a[j - increment];
}else{
break;
}
}
a[j] = temp;
}
}
// 检测一下排序的结果
for(int i2 : a) {
System.out.println("i="+ i2);
}
}
}
5:数组排序
事实上, 数组的排序不用那么麻烦, 上面只是想让大家对一些基本的排序算法有了解
而已。在 java.util.Arrays 类中有一个静态方法 sort,可以用这个类的 sort 方法来对数组进行
排序。
示例如下:
public classTest {
public static voidmain(String[] args) {
// 需要排序的数组,目前是按照升序排列的
inta[] = new int[5];
a[0] = 3;
a[1] = 4;
a[2] = 1;
a[3] = 5;
a[4] = 2;
//数组排序
java.util.Arrays.sort(a);
// 检测一下排序的结果
for(inti2 : a) {
System.out.println("i="+ i2);
}
}
}
注意:现在的 sort 方法都是升序的,要想实现降序的,还需要 Comparator 的知识,这
个在后面会学到。
分享到:
相关推荐
### Java排序算法详解 在Java编程中,排序算法是数据结构与算法中不可或缺的一部分,它不仅能够帮助我们理解和处理数据,还能提升程序的性能。本文将深入探讨Java中常见的几种基本排序算法,包括插入排序、交换排序...
### Java 实现数据结构常见排序算法及详解 #### 排序算法概述 排序算法是计算机科学中的基础概念之一,主要用于将一系列数据按照特定规则进行排列。根据数据处理方式的不同,排序算法大致分为两大类:比较排序与非...
这个名为"Java常见排序算法源码集.rar"的压缩文件显然包含了多种常用的排序算法的Java实现,对于初学者来说,这是一个非常宝贵的资源,可以深入理解各种算法的工作原理。 首先,我们来逐一探讨这些常见的排序算法:...
`Algorithm.java`文件可能包含了这些排序算法的Java实现代码,而`常见排序算法的实现与性能比较.doc`文档则可能详细比较了这些算法的性能和适用场景。`readme.txt`文件可能是对整个项目的简要说明,包括如何运行和...
本压缩包"常见的七大排序算法Java实现.zip"包含了七种经典的排序算法在Java语言中的实现。尽管文件列表中并未明确列出每种排序算法的名称,但根据常规,这七大排序算法可能包括冒泡排序、插入排序、选择排序、快速...
本文将详细介绍几种常见的排序算法及其Java实现,同时也会涉及二叉树的基本概念和实现。 首先,让我们从最简单的排序算法开始。冒泡排序是一种基础的交换排序方法,它通过重复遍历待排序的数组,依次比较相邻元素并...
希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。 #### 实现代码: ```java package org...
本篇文章将详细探讨Java中常见的八种排序算法,每一种都有其独特的特性和适用场景。 1. **冒泡排序(Bubble Sort)** 冒泡排序是最基础的排序算法之一,通过不断交换相邻的逆序元素来逐步完成排序。它的时间复杂度为...
根据提供的文件信息,我们可以总结出该文档主要涉及了五种基于Java实现的排序算法:插入排序(Insert Sort)、冒泡排序(Bubble Sort)、选择排序(Selection Sort)、希尔排序(Shell Sort)以及快速排序(Quick ...
以上介绍了Java排序算法中常见的几种方法及其变体。每种算法都有其特点和适用场景,例如当数据量较小时可以选择直接插入排序或直接选择排序;当数据量较大时,归并排序和快速排序则更为合适。理解这些算法的工作原理...
Java 排序算法概述 Java 排序算法是指在 Java 编程语言中使用的各种排序方法,旨在对数据进行有序排列。常见的排序算法有插入排序、交换排序、选择排序、归并排序、分配排序等。 插入排序是最基本的一种排序算法,...
以下是几种常见的Java排序算法: 1. 冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复进行直到...
下面我们将详细探讨Java中常见的几种排序算法。 1. 冒泡排序(Bubble Sort) 冒泡排序是一种简单的交换排序,通过不断比较相邻元素并交换位置,将最大或最小的元素逐渐“冒泡”到数组的一端。虽然效率较低,但其...
Java几种常见的排序算法
Java中常见的排序算法有以下几种: 冒泡排序(Bubble Sort):通过比较相邻元素的大小,将较大的元素逐渐向后移动,直到整个序列有序。 选择排序(Selection Sort):每次遍历数组,找到最小(或最大)的元素,将其...
### Java实现的常见排序算法详解 #### 一、冒泡排序 **定义及特点:** 冒泡排序是一种简单的排序算法,适用于数据量较小的情况。它的基本思想是通过不断地比较和交换相邻元素的位置来达到排序的目的。该算法的名字...
【Java排序算法详细整理】 在计算机科学中,排序算法是用于对一组数据进行排列的算法。在Java中,实现各种排序算法有助于理解数据结构和算法的原理,同时也能提高编程能力。以下是对Java中常见的几种排序算法的详细...
这个"Java排序算法包"提供了对多种排序算法的支持,并且允许用户根据自己的需求自定义比较条件,使得排序功能更加灵活。 1. **排序算法基础**: - 排序是指将一组数据按照特定的顺序进行排列的过程。常见的排序...
本资源包含的是Java实现的各种常见排序算法的代码示例,每个算法都有详细的注释,方便初学者理解和学习。 1. **冒泡排序**:这是一种基础的排序算法,通过不断交换相邻的逆序元素来逐渐把较大的元素推向数组的后部...
它通过将待排序的序列按照一定的增量分组,对每组使用直接插入排序算法排序,然后逐渐减少增量,直至增量为1,整个序列基本有序,最后再进行一次直接插入排序。希尔排序的时间复杂度在最坏的情况下为O(n^2),但在...