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. **插入排序**: 插入排序是一种简单直观的排序算法,它的工作原理是通过构造一个...
根据给定的文件信息,我们可以深入探讨几种在C#中实现的基本排序算法,包括冒泡排序、选择排序、插入排序以及希尔排序。这些算法在数据结构与算法领域中占有重要地位,是理解排序机制和算法复杂度分析的基础。 ### ...
根据给定的信息,本文将详细解释C#中的几种基本排序算法:选择排序、冒泡排序、快速排序、插入排序、希尔排序以及归并排序的基本原理和实现方式。 ### 一、选择排序(Selection Sort) #### 算法原理 选择排序是一...
冒泡法排序是一种基础且直观的排序算法,它通过...在学习冒泡法排序的同时,还可以了解其他排序算法,比如插入排序、选择排序、希尔排序、快速排序、归并排序和堆排序等,这些都有助于提升对排序算法的理解和应用能力。
本篇文章将深入探讨几种常见的排序算法的C++实现,包括冒泡排序、选择排序、插入排序、快速排序、归并排序以及堆排序。 1. **冒泡排序**: 冒泡排序是最基础的排序算法之一,它通过重复遍历待排序的数列,依次比较...
冒泡排序、快速排序和插入排序是三种基本的排序算法,它们在计算机科学中有着广泛的应用,尤其是在数据处理和算法分析领域。这三种排序方法各有特点,适用的场景也不同。 **冒泡排序(Bubble Sort)** 冒泡排序是一...
在"9种排序"这个文件中,可能包含了上述以及其他类型的排序算法,如快速排序、归并排序、希尔排序等。每一种都有其独特的思想和适用范围,值得深入研究。通过实践这些算法,不仅可以提升编程技巧,也能增强对算法...
在给定的文档中,介绍了多种常见的排序算法,包括冒泡排序、快速排序、选择排序、插入排序等,并提供了相应的Java代码实现。 冒泡排序(Bubble Sort)是一种简单的比较排序算法,其基本思想是通过重复遍历待排序...
以下将详细讲解几种常见的排序算法及其在C#中的实现。 ### 冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法,通过重复遍历数组,比较相邻元素并交换位置来实现排序。其核心思想是每次遍历时,最大(或最小...
### C语言中数组常用的排序算法 ...以上就是C语言中几种常见的数组排序算法的详细介绍。这些算法各有特点,适用于不同的场景。理解这些算法的基本原理和优缺点,有助于我们在实际编程中做出更合理的选择。
以下是对标题"排序代码实现"及描述中提及的几种排序算法的详细解释: 1. **冒泡排序**:冒泡排序是一种简单的排序算法,通过不断交换相邻的未排序元素来逐步推进排序。它重复遍历数组,比较每对相邻元素,如果顺序...
这三种排序算法在不同的场景下有着各自的优势和适用性,而作为C++程序员,理解它们的工作原理及性能特点对于优化代码至关重要。 快速排序是一种分治策略的体现,由英国计算机科学家C.A.R. Hoare于1960年提出。它的...
根据给定的文件信息,我们将深入探讨几种在C语言中常用的排序算法,包括冒泡排序、插入排序、选择排序、希尔排序以及快速排序。这些排序算法各有特点,适用于不同的场景和数据规模。 ### 冒泡排序(Bubble Sort) ...