package 数组的几种排序方法;
public class SortArray {
//程序入口:测试冒泡,选择,插入,希尔排序方式;
public static void main(String args[]) {
//取得要排序的数组
int[] srcA = createSrcArray(5);
System.out.println("冒泡排序前数组中的顺序的值如下:");
printArray(srcA);
System.out.println();
System.out.println("冒泡排序的结果:");
int[] tem=maopao(srcA);
printArray(tem);
System.out.println();
srcA = createSrcArray(6);
System.out.println("选择排序前数组中的顺序的值如下:");
printArray(srcA);
System.out.println();
System.out.println("选择排序的结果:");
tem=xuanZe(srcA);
printArray(tem);
System.out.println();
srcA = createSrcArray(7);
System.out.println("插入排序前数组中的顺序的值如下:");
printArray(srcA);
System.out.println();
System.out.println("插入排序的结果:");
tem=caRu(srcA);
printArray(tem);
System.out.println();
srcA = createSrcArray(8);
System.out.println("希尔排序前数组中的顺序的值如下:");
printArray(srcA);
System.out.println();
System.out.println("希尔排序的结果:");
tem=shell(srcA);
printArray(tem);
}
//生产一个乱序的,指定长度的原始数组
public static int[] createSrcArray(int len) {
//初始化要排序的数组中的值
int[] base = new int[len];
for(int i=0;i<base.length;i++) {
//创建一个随机对象
java.util.Random random = new java.util.Random();
//调用随机对象,每次循环时生成一个0-100的随机数
int value = random.nextInt(100);
//给数组中指定位置上添上随机数:
base[i] = value;
}
return base;
}
//打印数组中的元素
public static void printArray(int[] ia) {
//如果要打印的数组为null,则不打印:
if(ia==null) {
return;
}
for(int i=0;i<ia.length;i++) {
System.out.print(" "+ia[i]);
}
System.out.print("");
}
//冒泡排序
public static int[] maopao(int[] x) {
for(int i=0;i<x.length;i++) {
for(int j=i+1;j<x.length;j++) {
if(x[i]>x[j]) {
int temp = x[i];
x[i] = x[j];
x[j] = temp;
}
}
}
return x;
}
//选择排序
public static int[] xuanZe(int[] x) {
for(int i=0;i<x.length;i++) {
int lowerIndex = i;
//找出最小的一个索引
for(int j=i+1;j<x.length;j++) {
if(x[j]<x[lowerIndex]) {
lowerIndex = j;
}
}
//交换
int temp = x[i];
x[i] = x[lowerIndex];
x[lowerIndex] = temp;
}
return x;
}
//插入排序
public static int[] caRu(int[] x) {
for(int i=1;i<x.length;i++) {
for(int j=i;j>0;j--) {
if(x[j]<x[j-1]) {
int temp = x[j];
x[j] = x[j-1];
x[j-1] = temp;
}
}
}
return x;
}
//希尔排序
public static int[] shell(int[] x) {
//分组
for(int increment=x.length/2;increment>0;increment/=2) {
for(int i=increment;i<x.length;i++) {
int temp = x[i];
int j=0;
for(j=i;j>=increment;j-=increment) {
if(temp<x[j-increment]) {
x[j] = x[j-increment];
}else {
break;
}
}
x[j] = temp;
}
}
return x;
}
}
输出结果:
冒泡排序前数组中的顺序的值如下:
28 93 12 99 6
冒泡排序的结果:
6 12 28 93 99
选择排序前数组中的顺序的值如下:
50 49 30 72 10 4
选择排序的结果:
4 10 30 49 50 72
插入排序前数组中的顺序的值如下:
43 3 8 96 20 27 56
插入排序的结果:
3 8 20 27 43 56 96
希尔排序前数组中的顺序的值如下:
79 10 13 53 7 27 0 18
希尔排序的结果:
0 7 10 13 18 27 53 79
相关推荐
本文将深入探讨标题中提到的几种基于比较的排序算法:选择排序、插入排序、归并排序、快速排序、堆排序、冒泡排序以及希尔排序。 1. **选择排序(Selection Sort)**: - 基本思想:在未排序的序列中找到最小(或...
综上所述,这几种排序算法各有特点,适用于不同的场景。例如,当处理规模较小的数据时,可以直接使用插入排序;而对于大规模数据集,快速排序通常是更好的选择。此外,希尔排序通过引入增量序列,能够在一定程度上...
本文将深入探讨几种常用的排序算法——直接选择排序、直接插入排序、快速排序、堆排序以及希尔排序,并通过C++语言进行实现与比较,以帮助读者更好地理解它们的工作原理、效率差异及适用场景。 ### 直接选择排序 ...
下面将详细介绍其中提及的几种排序算法。 1. **冒泡排序**: 冒泡排序是最基础的排序算法之一,通过重复遍历待排序的数组,比较相邻元素并交换顺序,使较大的元素逐渐“冒”到数组的末尾。其主要步骤是:比较相邻...
冒泡排序、快速排序、简单插入排序、希尔排序、简单选择排序和堆排序是数据结构中常见的六种基本排序算法,它们各有特点和应用场景,是学习数据结构必考的知识点。 冒泡排序是一种简单直观的排序算法,其基本思想是...
以上就是Java中常见的几种排序算法,每种都有其适用场景和优缺点。实际编程中,我们会根据数据特性、性能需求和资源限制选择合适的排序算法。在实际的Java项目中,这些算法可以通过类、方法等方式实现,并在HTML文件...
本篇将详细阐述标题和描述中提到的几种线性表排序算法,包括插入排序、希尔排序、冒泡排序、快速排序、堆排序以及归并排序。 1. **插入排序**: 插入排序是一种简单直观的排序算法,它的工作原理是通过构造一个...
插入排序是最直观的一种排序算法,通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。希尔排序是插入排序的一种更高效的改进版本,它通过将原始数据分为几个子序列,分别进行插入...
根据给定文件的信息,本文将详细介绍Java中几种常见的数组排序算法,包括插入排序、交换排序、选择排序、归并排序以及基数排序等,并探讨不同排序方法的应用场景。 ### 一、插入排序 #### 1. 直接插入排序 直接...
根据给定的文件信息,我们可以深入探讨几种在C#中实现的基本排序算法,包括冒泡排序、选择排序、插入排序以及希尔排序。这些算法在数据结构与算法领域中占有重要地位,是理解排序机制和算法复杂度分析的基础。 ### ...
在计算机科学领域,排序算法是用于将一系列元素按照特定的顺序(通常是升序或...以上就是对十个基础排序算法的详细介绍,它们各自具有不同的特点和适用范围,在实际编程中选择合适的排序算法对提高程序效率至关重要。
本文将详细介绍如何用Python语言实现包括插入排序、希尔排序、冒泡排序和快速排序在内的几种常见排序算法。 首先,插入排序(Insertion Sort)是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未...
根据给定的信息,本文将详细解释C#中的几种基本排序算法:选择排序、冒泡排序、快速排序、插入排序、希尔排序以及归并排序的基本原理和实现方式。 ### 一、选择排序(Selection Sort) #### 算法原理 选择排序是一...
冒泡法排序是一种基础且直观的排序算法,它通过...在学习冒泡法排序的同时,还可以了解其他排序算法,比如插入排序、选择排序、希尔排序、快速排序、归并排序和堆排序等,这些都有助于提升对排序算法的理解和应用能力。
本篇文章将深入探讨几种常见的排序算法的C++实现,包括冒泡排序、选择排序、插入排序、快速排序、归并排序以及堆排序。 1. **冒泡排序**: 冒泡排序是最基础的排序算法之一,它通过重复遍历待排序的数列,依次比较...
冒泡排序、快速排序和插入排序是三种基本的排序算法,它们在计算机科学中有着广泛的应用,尤其是在数据处理和算法分析领域。这三种排序方法各有特点,适用的场景也不同。 **冒泡排序(Bubble Sort)** 冒泡排序是一...
在"9种排序"这个文件中,可能包含了上述以及其他类型的排序算法,如快速排序、归并排序、希尔排序等。每一种都有其独特的思想和适用范围,值得深入研究。通过实践这些算法,不仅可以提升编程技巧,也能增强对算法...
在给定的文档中,介绍了多种常见的排序算法,包括冒泡排序、快速排序、选择排序、插入排序等,并提供了相应的Java代码实现。 冒泡排序(Bubble Sort)是一种简单的比较排序算法,其基本思想是通过重复遍历待排序...
以下将详细讲解几种常见的排序算法及其在C#中的实现。 ### 冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法,通过重复遍历数组,比较相邻元素并交换位置来实现排序。其核心思想是每次遍历时,最大(或最小...
### C语言中数组常用的排序算法 ...以上就是C语言中几种常见的数组排序算法的详细介绍。这些算法各有特点,适用于不同的场景。理解这些算法的基本原理和优缺点,有助于我们在实际编程中做出更合理的选择。