`

数组中的几种排序法(冒泡,选择,插入,希尔)

阅读更多

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中常见的几种排序算法,每种都有其适用场景和优缺点。实际编程中,我们会根据数据特性、性能需求和资源限制选择合适的排序算法。在实际的Java项目中,这些算法可以通过类、方法等方式实现,并在HTML文件...

    c++实现多种线性表排序的算法(插入排序,希尔,冒泡,快速,堆排序,归并排序)

    本篇将详细阐述标题和描述中提到的几种线性表排序算法,包括插入排序、希尔排序、冒泡排序、快速排序、堆排序以及归并排序。 1. **插入排序**: 插入排序是一种简单直观的排序算法,它的工作原理是通过构造一个...

    C#的几种排序法介绍了“冒泡”,“选择”,等

    根据给定的文件信息,我们可以深入探讨几种在C#中实现的基本排序算法,包括冒泡排序、选择排序、插入排序以及希尔排序。这些算法在数据结构与算法领域中占有重要地位,是理解排序机制和算法复杂度分析的基础。 ### ...

    c#的算法 选择排序 冒泡排序 快速排序 插入排序 。。。

    根据给定的信息,本文将详细解释C#中的几种基本排序算法:选择排序、冒泡排序、快速排序、插入排序、希尔排序以及归并排序的基本原理和实现方式。 ### 一、选择排序(Selection Sort) #### 算法原理 选择排序是一...

    冒泡法排序

    冒泡法排序是一种基础且直观的排序算法,它通过...在学习冒泡法排序的同时,还可以了解其他排序算法,比如插入排序、选择排序、希尔排序、快速排序、归并排序和堆排序等,这些都有助于提升对排序算法的理解和应用能力。

    各种排序算法C++的实现(冒泡,选择,插入,快速,归并,堆)

    本篇文章将深入探讨几种常见的排序算法的C++实现,包括冒泡排序、选择排序、插入排序、快速排序、归并排序以及堆排序。 1. **冒泡排序**: 冒泡排序是最基础的排序算法之一,它通过重复遍历待排序的数列,依次比较...

    冒泡、快速、插入排序代码

    冒泡排序、快速排序和插入排序是三种基本的排序算法,它们在计算机科学中有着广泛的应用,尤其是在数据处理和算法分析领域。这三种排序方法各有特点,适用的场景也不同。 **冒泡排序(Bubble Sort)** 冒泡排序是一...

    数据结构 几种排序法

    在"9种排序"这个文件中,可能包含了上述以及其他类型的排序算法,如快速排序、归并排序、希尔排序等。每一种都有其独特的思想和适用范围,值得深入研究。通过实践这些算法,不仅可以提升编程技巧,也能增强对算法...

    Java实现几种常见排序方法-直插、冒泡、选择、快排、堆排等

    在给定的文档中,介绍了多种常见的排序算法,包括冒泡排序、快速排序、选择排序、插入排序等,并提供了相应的Java代码实现。 冒泡排序(Bubble Sort)是一种简单的比较排序算法,其基本思想是通过重复遍历待排序...

    c# 实现数组排序

    以下将详细讲解几种常见的排序算法及其在C#中的实现。 ### 冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法,通过重复遍历数组,比较相邻元素并交换位置来实现排序。其核心思想是每次遍历时,最大(或最小...

    C语言中数组常用的排序算法

    ### C语言中数组常用的排序算法 ...以上就是C语言中几种常见的数组排序算法的详细介绍。这些算法各有特点,适用于不同的场景。理解这些算法的基本原理和优缺点,有助于我们在实际编程中做出更合理的选择。

    排序代码实现

    以下是对标题"排序代码实现"及描述中提及的几种排序算法的详细解释: 1. **冒泡排序**:冒泡排序是一种简单的排序算法,通过不断交换相邻的未排序元素来逐步推进排序。它重复遍历数组,比较每对相邻元素,如果顺序...

    3种排序方法的对比(快速排序,归并排序,冒泡排序)

    这三种排序算法在不同的场景下有着各自的优势和适用性,而作为C++程序员,理解它们的工作原理及性能特点对于优化代码至关重要。 快速排序是一种分治策略的体现,由英国计算机科学家C.A.R. Hoare于1960年提出。它的...

    c语言各种排序算法,冒泡,排序等

    根据给定的文件信息,我们将深入探讨几种在C语言中常用的排序算法,包括冒泡排序、插入排序、选择排序、希尔排序以及快速排序。这些排序算法各有特点,适用于不同的场景和数据规模。 ### 冒泡排序(Bubble Sort) ...

Global site tag (gtag.js) - Google Analytics