package Test1;
public class SortDemo {
/**
* 冒泡排序 数组角标从前往后走,大的数往后走1.
* 基本思想:两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,
* 直到没有反序的数据元素为止。
* @param arr 待排序数组
*
*/
public static void Bubble(int[] arr){
for(int i=1;i<arr.length;i++){
for(int j=0;j<arr.length-i;j++){
if(arr[j]>arr[j+1]){//
//换位
swap(arr,j,j+1);
}
}
}
}
/**
* 冒泡排序第二种方法 数组角标从后往前遍历,小的数往前跑
* @param arr
*/
public static void Bubble2(int[] arr){
//两两比较,外围循环为长度减1
for(int i=0;i<arr.length-1;i++){
for(int j=arr.length-1;j>i;j--){
if(arr[j]<arr[j-1])
swap(arr,j,j-1);
}
}
}
/**
* 选择排序。基本思想:两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,
* 直到没有反序的数据元素为止。
* @param arr
*/
public static void select (int[] arr){
int min;//最小索引
for(int i=0;i<arr.length-1;i++){
min =i;//假设没轮的第一个元素师最小元素
//从假设的最小元素的下一元素开始循环
for(int j=i+1;j<arr.length;j++){
if(arr[min]>arr[j]){
min=j;
}
}
swap(arr,i,min);
}
}
/**插入排序,从小到大顺序排列
* 基本思想:每次将一个待排序的数据元素,插入到前面已经排好序的数列中的适当位置
* 使数列依然有序;直到待排序数据元素全部插入完为止。
* @param arr
*/
public static void InsertSort(int[] arr){
for(int i=0;i<arr.length-1;i++){
//待插入的元素
int insertElem = arr[i+1];
for(int j=0;j<i+1;j++){
//找到第一个比待插入元素insertElem大的数
if(insertElem < arr[j]){
//j位后已有序元素往后移动一位
for(int x=i+1;x>j;x--){
arr[x]=arr[x-1];
}
//在j位插入insertElem
arr[j]=insertElem;
break;
}
}
}
}
/**
* 数组中两个元素交换位置
* @param arr
* @param x
* @param y
*/
public static void swap(int[] arr,int x,int y){
int temp = arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
/**
* 打印数组
* @param arr
*/
public static void sop(int[] arr){
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
public static void main(String[] args) {
int[] arr = new int[]{5,2,1,22,14,7,9};
//冒泡排序
//Bubble(arr);
//选择排序
//select(arr);
//插入排序
InsertSort(arr);
sop(arr);
}
}
package Test1;
public class SortDemo {
/**
* 冒泡排序 数组角标从前往后走,大的数往后走1.
* 基本思想:两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,
* 直到没有反序的数据元素为止。
* @param arr 待排序数组
*
*/
public static void Bubble(int[] arr){
for(int i=1;i<arr.length;i++){
for(int j=0;j<arr.length-i;j++){
if(arr[j]>arr[j+1]){//
//换位
swap(arr,j,j+1);
}
}
}
}
/**
* 冒泡排序第二种方法 数组角标从后往前遍历,小的数往前跑
* @param arr
*/
public static void Bubble2(int[] arr){
//两两比较,外围循环为长度减1
for(int i=0;i<arr.length-1;i++){
for(int j=arr.length-1;j>i;j--){
if(arr[j]<arr[j-1])
swap(arr,j,j-1);
}
}
}
/**
* 选择排序。基本思想:两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,
* 直到没有反序的数据元素为止。
* @param arr
*/
public static void select (int[] arr){
int min;//最小索引
for(int i=0;i<arr.length-1;i++){
min =i;//假设没轮的第一个元素师最小元素
//从假设的最小元素的下一元素开始循环
for(int j=i+1;j<arr.length;j++){
if(arr[min]>arr[j]){
min=j;
}
}
swap(arr,i,min);
}
}
/**插入排序,从小到大顺序排列
* 基本思想:每次将一个待排序的数据元素,插入到前面已经排好序的数列中的适当位置
* 使数列依然有序;直到待排序数据元素全部插入完为止。
* @param arr
*/
public static void InsertSort(int[] arr){
for(int i=0;i<arr.length-1;i++){
//待插入的元素
int insertElem = arr[i+1];
for(int j=0;j<i+1;j++){
//找到第一个比待插入元素insertElem大的数
if(insertElem < arr[j]){
//j位后已有序元素往后移动一位
for(int x=i+1;x>j;x--){
arr[x]=arr[x-1];
}
//在j位插入insertElem
arr[j]=insertElem;
break;
}
}
}
}
/**
* 数组中两个元素交换位置
* @param arr
* @param x
* @param y
*/
public static void swap(int[] arr,int x,int y){
int temp = arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
/**
* 打印数组
* @param arr
*/
public static void sop(int[] arr){
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
public static void main(String[] args) {
int[] arr = new int[]{5,2,1,22,14,7,9};
//冒泡排序
//Bubble(arr);
//选择排序
//select(arr);
//插入排序
InsertSort(arr);
sop(arr);
}
}
分享到:
相关推荐
在Java编程语言中,数组排序是一项基础且重要的任务。它涉及到不同的算法,这些算法通过比较和交换元素来达到数组元素的有序状态。本篇将详细探讨几种常见的排序算法及其在Java中的实现。 首先,让我们从最简单的...
Java数组是Java编程语言中的基本数据结构之一,用于存储固定数量的同类型元素。了解和熟练掌握数组的使用是学习Java的重要环节。本篇练习题涵盖了数组的基本概念、操作和异常处理,下面是针对题目中涉及知识点的详细...
在编程领域,数组排序是一个常见的任务,特别是在Java中。这里我们关注的是“部分数组递增排序”,这通常指的是对一个数组中的某一段元素进行升序排列。以下是对这个主题的详细解释。 首先,理解基本概念。数组是...
### Java数组排序源代码分析与理解 #### 一、概览 本文将深入解析一个包含多种排序算法(冒泡排序、选择排序、插入排序、希尔排序)的Java程序,并通过具体的代码实现来帮助读者理解这些排序算法的工作原理及其实现...
在编程领域,数组和排序算法是基础且至关重要的概念,特别是在Java编程中。数组是一种数据结构,它允许我们在内存中存储相同类型的数据项,并通过索引来访问这些元素。理解数组和掌握高效的排序算法对于编写高性能的...
在编程领域,数组排序是基础且重要的操作,尤其是在Java中。本篇文章将深入探讨四种基本的排序算法:冒泡排序、选择排序、插入排序以及希尔排序,并结合递归算法的复杂度进行分析。这些排序算法在不同的场景下有不同...
结合这些知识点,开发者可以创建一个Java程序,首先从文件中读取数据到数组,然后使用选择排序对数组进行排序,最后利用二分查找在排序后的数组中查找特定元素。这是一个典型的文件操作与算法应用的实例。
Java数组是程序设计中的基本构建块,它允许程序员存储多个相同类型的数据在一个单一的结构中。在Java中,数组是一种对象,它们具有固定的大小,并且一旦创建,就不能更改其长度。数组提供了通过索引来访问其元素的...
Java数组是Java编程语言中的基本数据结构之一,它允许我们存储多个同类型的元素在一个单一的变量中。数组的使用在程序设计中至关重要,因为它提供了一种高效、有序的方式来管理和访问数据。下面将深入探讨Java数组的...
Java数组是程序设计中不可或缺的基础概念,它是一种数据结构,允许我们存储同类型的多个元素。在Java中,数组是对象,具有固定的大小,一旦创建,其长度就不能改变。本篇文章将深入探讨Java数组的各个方面,包括创建...
在Java编程语言中,数组是一种特殊的数据...通过学习这些内容,开发者能够更熟练地在Java程序中运用数组,提高代码的效率和可读性。同时,掌握好数组和方法的交互也是Java编程的基础,对于理解和编写复杂程序至关重要。
本篇介绍了Java中二维数组排序的实现,主要使用了冒泡排序算法,并且确保了排序过程中同一条记录内的元素不会改变其相对位置。这种排序方式适用于类似Excel表格的场景,在实际应用中具有一定的实用价值。
### 二维数组冒泡排序详解 #### 一、引言 冒泡排序是一种简单的排序算法,在数据处理领域有着广泛的应用。对于一维数组而言,冒泡排序实现起来...希望本文能够帮助初学者更好地理解二维数组排序的原理和实现细节。
【Java数组】是Java编程语言中基础且重要的数据结构,它允许存储固定数量的相同类型的数据。数组在Java中属于引用类型,也就是说数组本身是一个对象,数组中的每个元素相当于这个对象的成员变量。数组可以包含任何...
### Java数组和字符串详解 #### 实验目标与背景 本次实验旨在深化理解Java中的数组与字符串操作,聚焦于`String`类与`StringBuffer`类的掌握,包括它们的常用方法、相等性判断的不同方式、数组的创建及引用机制,...
本篇将深入探讨Java数组的相关知识点,并通过实际的例子代码来加深理解。 1. **数组的声明与初始化** 在Java中,我们可以声明一个数组并同时初始化它。例如,创建一个包含5个整数的数组: ```java int[] ...
### Java数组讲解 #### 1. 数组基本概念与初始化 - **定义**: 数组是一种基本的数据结构,用于存储相同类型的多个元素。这些元素在内存中是连续存储的。 - **初始化**: 可以通过两种方式进行初始化:动态初始化和...
【Java数组排序算法详解】 在Java编程中,排序是一项基础且重要的任务,尤其是在处理大量数据时。本文将深入探讨几种常见的数组排序算法,包括插入排序、交换排序、选择排序和归并排序,以及基数排序。这些算法在...
本文将深入探讨一个简单的数组排序技术——冒泡排序法,通过实例来阐述其工作原理和Java中的实现方式。 冒泡排序是一种基础的排序算法,其基本思想是通过重复遍历待排序的数列,依次比较相邻元素并根据需要交换它们...
在IT行业中,数组排序是一个基础且重要的概念,广泛应用于数据处理和算法实现。本文将深入探讨两种常见的排序算法——选择排序和冒泡排序,并结合给定的文件信息进行解析。 首先,选择排序是一种简单直观的排序算法...