`

几种排序算法

    博客分类:
  • Java
阅读更多
1、冒泡排序
public static void sort(int [] a){ 
  int temp =0;
  for(int i = 0; i < a.length; i++){
   for(int j = 0; j <a.length - i-1;j++){
    if(a[j] > a[j+1]){
      temp = a[j];
      a[j] = a[j+1];
      a[j+1] = temp;
    }   
   }
  } 
  for(int num : a){
   System.out.print(num+",");
  } 



2、快速排序

/** 主方法 */
public static void main(String[] args) {
  // 声明数组
  int[] nums = { 27, 8, 57, 9, 23, 41, 65, 19, 0, 1, 2, 4, 5 };
  sort(nums);
  // 应用快速排序方法
  //quickSort(nums, 0, nums.length - 1);
  // 显示排序后的数组
  for (int i = 0; i < nums.length; ++i) {
   System.out.print(nums[i] + ",");
  }
  System.out.println("");
}
/** 快速排序方法 */
public static void quickSort(int[] a, int lo0, int hi0) {
  int lo = lo0;
  int hi = hi0;
  if (lo >= hi)
   return;
  // 确定指针方向的逻辑变量
  boolean transfer = true;
  while (lo != hi) {
   if (a[lo] > a[hi]) {
    // 交换数字
    int temp = a[lo];
    a[lo] = a[hi];
    a[hi] = temp;
    // 决定下标移动,还是上标移动
    transfer = (transfer == true) ? false : true;
   }
   // 将指针向前或者向后移动
   if (transfer)
    hi--;
   else
    lo++;
   // 显示每一次指针移动的数组数字的变化
   for (int i = 0; i < a.length; ++i) {
    System.out.print(a[i] + ",");
   }
   System.out.print(" (lo,hi) = " + "(" + lo + "," + hi + ")");
   System.out.println("");
  }
  // 将数组分开两半,确定每个数字的正确位置
  lo--;
  hi++;
  quickSort(a, lo0, lo);
  quickSort(a, hi, hi0);
}


3、插入排序
public void sort(Integer[] array, int from, int len) {
  Integer tmp = null;
  for (int i = from + 1; i < from + len; i++) {
   tmp = array[i];
   int j = i;
   for (; j > from; j--) {
    if (tmp.compareTo(array[j - 1]) < 0) {
     array[j] = array[j - 1];
    } else {
     break;
    }
   }
   array[j] = tmp;
  }
}
public static void main(String[] args) {
  SortDemo sd = new SortDemo();
  Integer[] num = new Integer[] { 12, 43, 16, 4, 5, 623, 13, 334, 55, 224 };
  sd.sort(num, 0, num.length);
  for (int n : num) {
   System.out.print(n + " ");
  }
}
分享到:
评论

相关推荐

    关于几种排序算法的比较分析

    关于数据的几种排序算法的程序对比分析,结合具体案例

    几种排序算法整理

    本文将深入探讨由C语言实现的几种常见排序算法,包括它们的基本原理、实现细节和性能特点。 首先,让我们从最经典的排序算法——冒泡排序(Bubble Sort)开始。冒泡排序通过不断地交换相邻的不正确顺序的元素来逐步...

    几种排序算法的代码实现

    根据给定文件中的标题、描述、标签以及部分内容,我们可以总结出以下关于几种排序算法的知识点,特别是关于希尔排序的相关细节。 ### 几种排序算法的代码实现 #### 1. **希尔排序** - **定义与原理**:希尔排序是...

    几种排序算法的实现(链表)

    下面我们将详细解析链表实现的几种排序算法,以及它们的优缺点。 1. **冒泡排序** (LinkList1.cpp 和 LinkList2.cpp): 冒泡排序是一种简单的交换排序,通过不断比较相邻元素并交换位置,使较大的元素逐渐"浮"到...

    最常见的几种排序算法,来看看

    这里我们将深入探讨几种最常见的排序算法,包括冒泡排序、选择排序、插入排序、快速排序以及归并排序。 1. 冒泡排序(Bubble Sort) 冒泡排序是最基础的排序算法之一,它通过不断地比较相邻元素并交换位置来实现...

    C++中的几种排序算法

    C++中的几种排序算法 C++中的几种排序算法是计算机科学中的一种基本算法,用于对数据进行排序。排序算法的选择取决于具体的应用场景和数据特点。本文将介绍C++中的几种常见的排序算法,包括插入排序、选择排序、...

    C语言实现几种排序算法

    以下是对标题和描述中提及的几种排序算法的详细解释: 1. **Shell排序**:由Donald Shell于1959年提出,是一种改进的插入排序。它通过将待排序的元素按一定的间隔分组,然后对每组进行插入排序,逐渐减小间隔,直到...

    Java几种排序算法

    本文将详细介绍Java中常见的几种排序算法,包括冒泡排序、快速排序以及选择排序。 1. **冒泡排序**: 冒泡排序是最基础的排序算法之一,它的主要思想是通过不断比较相邻元素并交换位置,使得较大的元素逐渐“浮”到...

    C排序源代码设计几种排序算法

    该程序包含了几种算法,读者可对此进行试验

    C语言几种排序算法实现.zip

    本资源"**C语言几种排序算法实现.zip**"可能包含了一系列用C语言编写的经典排序算法,如冒泡排序、插入排序、选择排序、快速排序、归并排序和堆排序等。下面将对这些常见的排序算法进行详细介绍。 1. **冒泡排序...

    个人针对学习几种排序算法的总结

    根据给定文件的内容,以下是对学习的几种排序算法的详细知识点总结。 1. 冒泡排序(BubbleSort): 冒泡排序是一种简单的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换...

    基于C语言的几种排序算法的分析.pdf

    在这篇《基于C语言的几种排序算法的分析》的研究论文中,作者陈思敏对计算机程序设计中常见的几种排序算法进行了深入的分析。文中讨论了排序算法的概念、特点、C语言实现方法以及算法的时间复杂度,还对这些排序算法...

    数据结构中几种排序算法分析比较

    ### 数据结构中几种排序算法分析比较 #### 插入排序 **插入排序**是一类简单直观的基于比较的排序算法。其基本思想是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 #####...

    JAVA关于几种排序算法的性能比较.pdf

    这个文件"JAVA关于几种排序算法的性能比较.pdf"显然探讨了不同排序算法在Java环境下的效率对比,包括直接插入排序、直接选择排序、冒泡排序、希尔排序、快速排序和堆排序。这些排序算法各有优劣,适用于不同的场景,...

    几种排序算法的时间耗费比较

    本程序主要演示了归并,插入,快排等几种排序算法在各种不同数据量的情况下的算法效率,适合编程新手对排序算法的认识和学习

    7种排序算法程序汇总

    7种排序算法程序汇总 冒泡排序 选择排序 插入排序 希排序尔 快速排序 二叉排序树 堆排序

    PHP中的几种排序算法

    PHP中的几种排序算法 一、 开发环境 1、环境搭建:Windows 7+Apache 2.4.18+MySQL 5.7.11+PHP 7.1.0。 2、文本编辑器:Sublime 3。 二、主要技术 本案例主要使用PHP 7中的几种排序算法:快速排序、选择排序、插入...

Global site tag (gtag.js) - Google Analytics