`
huibin
  • 浏览: 757131 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

排序算法

    博客分类:
  • JAVA
阅读更多

/**
 * 该文件所在的包
 */
package tongtu.hcrm.bean;

/**
 * @author Liu Huibin *
 * @version 1.0
 * @see java.lang.Class
 * @since jdk1.6.0_05
 */

public class Sort {

 public void swap(int a[], int i, int j) {
  int tmp = a[i];
  a[i] = a[j];
  a[j] = tmp;
 }

 public int partition(int a[], int low, int high) {
  int pivot, p_pos, i;
  p_pos = low;
  pivot = a[p_pos];
  for (i = low + 1; i <= high; i++) {
   if (a[i] > pivot) {
    p_pos++;
    swap(a, p_pos, i);
   }
  }
  swap(a, low, p_pos);
  return p_pos;
 }

 public void quicksort(int a[], int low, int high) {
  int pivot;
  if (low < high) {
   pivot = partition(a, low, high);
   quicksort(a, low, pivot - 1);
   quicksort(a, pivot + 1, high);
  }

 }

 public static void main(String args[]) {
  int vec[] = new int[] { 37, 47, 23, -5, 19, 56 };
  int temp;
  // 选择排序法(Selection Sort)
  long begin = System.currentTimeMillis();
  for (int k = 0; k < 1000000; k++) {
   for (int i = 0; i < vec.length; i++) {
    for (int j = i; j < vec.length; j++) {
     if (vec[j] > vec[i]) {
      temp = vec[i];
      vec[i] = vec[j];
      vec[j] = temp;
     }
    }

   }
  }
  long end = System.currentTimeMillis();
  System.out.println("选择法用时为:" + (end - begin));
  // 打印排序好的结果
  for (int i = 0; i < vec.length; i++) {
   System.out.println(vec[i]);
  }
  // 冒泡排序法(Bubble Sort)
  begin = System.currentTimeMillis();
  for (int k = 0; k < 1000000; k++) {
   for (int i = 0; i < vec.length; i++) {
    for (int j = i; j < vec.length - 1; j++) {
     if (vec[j + 1] > vec[j]) {
      temp = vec[j + 1];
      vec[j + 1] = vec[j];
      vec[j] = temp;
     }
    }

   }
  }
  end = System.currentTimeMillis();
  System.out.println("冒泡法用时为:" + (end - begin));
  // 打印排序好的结果
  for (int i = 0; i < vec.length; i++) {
   System.out.println(vec[i]);
  }

  // 插入排序法(Insertion Sort)
  begin = System.currentTimeMillis();
  for (int k = 0; k < 1000000; k++) {
   for (int i = 1; i < vec.length; i++) {
    int j = i;
    while (vec[j - 1] < vec[i]) {
     vec[j] = vec[j - 1];
     j--;
     if (j <= 0) {
      break;
     }
    }
    vec[j] = vec[i];
   }
  }
  end = System.currentTimeMillis();
  System.out.println("插入法用时为:" + (end - begin));
  // 打印排序好的结果
  for (int i = 0; i < vec.length; i++) {
   System.out.println(vec[i]);
  }

  // 快速排序法(Quick Sort)

  Sort s = new Sort();
  begin = System.currentTimeMillis();
  for (int k = 0; k < 1000000; k++) {
   s.quicksort(vec, 0, 5);
  }
  end = System.currentTimeMillis();
  System.out.println("快速法用时为:" + (end - begin));
  // 打印排序好的结果
  for (int i = 0; i < vec.length; i++) {
   System.out.println(vec[i]);
  }
 }

}

分享到:
评论

相关推荐

    基于比较的排序算法汇总 选择排序法 插入排序法 归并排序法 快速排序法 堆排序法 冒泡排序法 希尔排序法

    在IT领域,排序算法是计算机科学中的基础但至关重要的概念,尤其在数据处理和算法设计中扮演着核心角色。本文将深入探讨标题中提到的几种基于比较的排序算法:选择排序、插入排序、归并排序、快速排序、堆排序、冒泡...

    最快的排序算法 最快的内部排序法—桶排序法,排序算法数据结构

    最快的排序算法 最快的内部排序法—桶排序法,排序算法数据结构

    常见经典排序算法(C语言)1希尔排序 二分插入法 直接插入法 带哨兵的直接排序法 冒泡排序 选择排序 快速排序 堆排序.docx

    常见的经典排序算法有希尔排序、二分插入法、直接插入法、带哨兵的直接排序法、冒泡排序、选择排序、快速排序、堆排序等。 一、希尔排序(Shell 排序法) 希尔排序法,又称宿小增量排序,是 1959 年由 D.L.Shell ...

    最快的排序算法 最快的内部排序法—桶排序法 (1),排序算法数据结构

    最快的排序算法 最快的内部排序法—桶排序法 (1),排序算法数据结构

    python常用排序算法汇总

    该程序包含7大排序算法: # sort.bubbleSort() #冒泡排序 # sort.shellSort() #希尔排序 # sort.insertionSort() #插入排序 # sort.Selectionsort1() #选择排序 # sort.heapSort() #堆排序 # sort.countSort() ...

    冒泡排序法+输入输出数组

    上次的改进,审核求过.

    十大排序算法

    常见10大算法,从原理,动图解析到代码实现,逐步分析,让你轻松入门算法

    C++实现希尔、快速、堆排序、归并排序算法

    在编程领域,排序算法是计算机科学中的重要组成部分,特别是在数据处理和算法效率分析上。本文将详细介绍C++中实现的希尔排序、快速排序、堆排序和归并排序这四种经典排序算法。 希尔排序,由Donald Shell于1959年...

    排序算法实验报告

    希尔排序,冒泡排序、快速排序递归排序,快速排序非递归排序,快速排序改进算法

    6种排序算法的排序系统

    六种排序算法的排序系统 本篇文章主要讲解了六种排序算法的排序系统,包括插入排序、冒泡排序、选择排序、快速排序、堆排序和归并排序。该系统可以让用户选择六种排序算法中的任意一个,并输出结果。 插入排序 ...

    7种排序算法的效率比较

    算法课的一个小项目,语言python。代码实习7种排序算法,TK实现简单GUI,源码可以学习7中排序算法详细实现,和GUI的搭建,基本包含了常用GUI组件。

    7种VB排序算法

    摘要:VB源码,算法相关,排序算法 七种常见的VB排序算法示例程序,演示了冒泡排序法、插入排序法、Bucket排序法、选择排序法、Shell排序法、快速排序法、Heap排序法这7种常见的VB排序算法示例,选择对应算法,可能...

    各种排序算法的详细分析

    此为一个利用Java语言编写的排序分析程序,程序中统计了各种排序算法(冒泡排序、选择排序、插入排序、希尔排序、快速排序、堆排序、归并排序、基数排序)的分析,ppt中包含各种排序算法的分析,附上动画演示(来自...

    冒泡排序算法 - 排序算法

    冒泡排序

    排序算法经典讲解

    在计算机科学领域,排序算法是数据处理中至关重要的一部分,它涉及到如何有效地重新排列一组数据,使其按照特定的顺序排列。本资源"MoreWindows白话经典算法之七大排序(高清版).pdf"提供了一套详尽的排序算法讲解,...

    排序算法超完美比较

    排序算法是一种将一组数据按照一定的顺序进行排列的算法,目的在于使数据有序化,进而便于检索和处理。排序可以分为内部排序和外部排序两大类,这两类排序方法在处理数据时所用的存储介质和策略有所不同。 内部排序...

    C语言 奇偶排序算法详解及实例代码

    使用奇偶排序法对一列随机数字进行排序的过程 处理器数组的排序 在并行计算排序中,每个处理器对应处理一个值,并仅有与左右邻居的本地互连。所有处理器可同时与邻居进行比较、交换操作,交替以奇-偶、偶-奇的顺序...

    排序算法演示程序

    排序算法是计算机科学中的核心概念,它涉及到如何有效地组织数据,以便快速地访问或操作。在本"排序算法演示程序"中,用户可以在Windows平台上直观地观察和理解各种排序算法的工作原理。通过运行sound-of-sorting-...

    数据结构学习笔记排序算法:基数排序

    数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数...

Global site tag (gtag.js) - Google Analytics