选择排序,冒泡排序,快速排序速度测试
以下结果是对有20000个元素数组的排序测试
快速排序最快,16毫秒
选择排序次之,2969毫秒
冒泡排序最慢(臭名昭著啊!)5844毫秒
实在差的太多了!
package design; public class Test { /** * 方法说明 * @param * @return */ public static void main(String[] args) { int[] array=new int[20000]; for(int i=0;i<20000;i++){ array[i]=(int) (Math.random()*100); } Test test=new Test(); long start1=System.currentTimeMillis(); test.Mp(array); System.out.println(System.currentTimeMillis()-start1); long start2=System.currentTimeMillis(); test.Xz(array); System.out.println(System.currentTimeMillis()-start2); long start3=System.currentTimeMillis(); System.out.println("快速排序:"); test.QuickSort(array, 0, array.length-1); System.out.println(System.currentTimeMillis()-start3); } //选择排序 public void Xz(int[] i){ System.out.println("选择排序:"); int temp; int len=i.length; for(int j=0;j<len-1;j++){ for(int t=j+1;t<len;t++){ if(i[j]<i[t]){ swap(i[j],i[t]); } } } /* for(int y:i){ System.out.print(y+", "); } System.out.println();*/ } //冒泡排序 public void Mp(int[] array){ System.out.println("冒泡排序:"); int temp; int len=array.length; for(int i=0;i<=len;i++){ for(int j=0;j<=len-2;j++){ if(array[j]<array[j+1]){ swap(array[j],array[j+1]); } } } /* for(int y:array){ System.out.print(y+", "); } System.out.println();*/ } //快速排序 private static void QuickSort(int[] list, int l, int r) { int i, j; int x, y; i = l; j = r; x = list[(r + l) / 2];// 定义中间值 do { while ((list[i] < x) && (i < r)) i++; while ((x < list[j]) && (j > l)) j--; if (i <= j) { y = list[j]; list[j] = list[i]; list[i] = y; i++; j--; } } while (i <= j); if (l < j) QuickSort(list, l, j); if (i < r) QuickSort(list, i, r); } //交换 public void swap(int a,int b){ int temp=a; a=b; b=temp; } }
您还没有登录,请您登录后再发表评论
我们将分析每种排序算法的工作原理、效率,并基于给定数据进行性能比较。 ### 一、插入排序(InsertSort) #### 原理 插入排序是一种简单的排序算法,它通过构建有序序列,对于未排序数据,在已排序序列中从后...
设计一个测试程序比较几种内部排序算法的关键字比较次数和移动次数以取得直观感受。 在本文中,我们将设计一个测试程序比较几种内部排序算法的关键字比较次数和移动次数,以取得直观感受。内部排序算法是指在内存中...
这四种排序算法各有优缺点。起泡排序虽然简单,但效率较低;快速排序通常表现最好,但在最坏情况下时间复杂度会退化为O(n^2);选择排序在任何情况下都有固定的时间复杂度,但不稳定;插入排序在处理小规模或部分有序...
文章中提到了几种常见的覆盖准则: - **语句覆盖**:确保测试用例覆盖了程序中的每一条语句。 - **分支覆盖**:确保测试用例覆盖了程序中所有的逻辑分支。 - **定义-使用关联**:关注变量定义和使用之间的关系,...
此外,代码中还展示了其他几种排序方法的实现,包括冒泡排序、双路冒泡排序、插入排序、快速排序和选择排序。这些排序算法各有特点: - 冒泡排序:通过不断交换相邻的逆序元素,逐步将最大(或最小)元素移到数组...
这里我们将深入探讨几种常见的排序算法,并在VS2013环境下进行实现和比较。 1. 冒泡排序(Bubble Sort) 冒泡排序是一种简单的交换排序,它通过重复遍历待排序的数列,依次比较相邻元素并根据需要交换位置,直到...
本文将深入探讨几种常用的排序算法——直接选择排序、直接插入排序、快速排序、堆排序以及希尔排序,并通过C++语言进行实现与比较,以帮助读者更好地理解它们的工作原理、效率差异及适用场景。 ### 直接选择排序 ...
我们将探讨以下几种常见的内排序算法:冒泡排序、选择排序、插入排序、快速排序、归并排序以及堆排序。 **冒泡排序**是一种简单的排序算法,通过重复遍历数组,比较相邻元素并交换位置来逐步将最大(或最小)元素...
**插入排序** 插入排序是一种简单直观的排序算法,它的工作...通过`sort_in.txt`读取数据,然后用`isort.c`和`sort_simon.h`中的函数对数据进行排序,最后与预期结果对比,可以全面评估这两种排序算法的正确性和性能。
设计一个测试程序比较几种内部排序算法的关键字比较次数和移动次数以取得直观感受。 【基本要求】 (1)实现各种内部排序。包括冒泡排序,直接选择排序,希尔排序,快速排序,堆排序。 (2) 待排序的元素的关键字为整数...
本项目针对内部排序算法进行了性能分析,通过设计一个测试程序,对比了几种常见内部排序算法的关键字比较次数和移动次数,以帮助我们更直观地理解不同算法的效率差异。以下是关于内部排序算法的一些关键知识点: 1....
快速排序是其中一种常用的排序算法,它的平均时间复杂度为O(n log n),是目前已知的最快的排序算法之一。快速排序的基本思想是选择一个.pivot元素,将数组分成两个部分,一部分小于pivot,一部分大于pivot,然后递归...
本文将深入探讨使用C语言实现的几种常见排序算法,并基于这些算法进行性能测试,重点关注数据交换次数、程序运行时间和排序趟数。 1. **排序算法概述**: - 排序是将一组数据按照特定顺序进行排列的过程,常见的...
【内部排序算法比较课程设计】主要关注的是对六种经典的内部排序算法的性能对比,包括起泡排序、直接插入排序、简单选择排序、快速排序、希尔排序和堆排序。这些算法是计算机科学中用于对数据进行排序的基础工具,各...
本文将深入探讨C++实现的几种常见排序算法,包括经典排序、冒泡排序、插入排序、归并排序和快速排序。这些算法的理解和应用对于任何C++初学者或算法初学者来说都极其有价值。 首先,我们来讨论经典排序,它通常指的...
这个文件"JAVA关于几种排序算法的性能比较.pdf"显然探讨了不同排序算法在Java环境下的效率对比,包括直接插入排序、直接选择排序、冒泡排序、希尔排序、快速排序和堆排序。这些排序算法各有优劣,适用于不同的场景,...
希尔排序是一种基于插入排序的快速排序算法,由美国计算机科学家Donald Shell在1959年提出。它的主要思想是将待排序的元素按照一定的增量序列进行分组,然后对每组内部进行插入排序,随着增量逐渐减少,每组包含的...
相关推荐
我们将分析每种排序算法的工作原理、效率,并基于给定数据进行性能比较。 ### 一、插入排序(InsertSort) #### 原理 插入排序是一种简单的排序算法,它通过构建有序序列,对于未排序数据,在已排序序列中从后...
设计一个测试程序比较几种内部排序算法的关键字比较次数和移动次数以取得直观感受。 在本文中,我们将设计一个测试程序比较几种内部排序算法的关键字比较次数和移动次数,以取得直观感受。内部排序算法是指在内存中...
这四种排序算法各有优缺点。起泡排序虽然简单,但效率较低;快速排序通常表现最好,但在最坏情况下时间复杂度会退化为O(n^2);选择排序在任何情况下都有固定的时间复杂度,但不稳定;插入排序在处理小规模或部分有序...
文章中提到了几种常见的覆盖准则: - **语句覆盖**:确保测试用例覆盖了程序中的每一条语句。 - **分支覆盖**:确保测试用例覆盖了程序中所有的逻辑分支。 - **定义-使用关联**:关注变量定义和使用之间的关系,...
此外,代码中还展示了其他几种排序方法的实现,包括冒泡排序、双路冒泡排序、插入排序、快速排序和选择排序。这些排序算法各有特点: - 冒泡排序:通过不断交换相邻的逆序元素,逐步将最大(或最小)元素移到数组...
这里我们将深入探讨几种常见的排序算法,并在VS2013环境下进行实现和比较。 1. 冒泡排序(Bubble Sort) 冒泡排序是一种简单的交换排序,它通过重复遍历待排序的数列,依次比较相邻元素并根据需要交换位置,直到...
本文将深入探讨几种常用的排序算法——直接选择排序、直接插入排序、快速排序、堆排序以及希尔排序,并通过C++语言进行实现与比较,以帮助读者更好地理解它们的工作原理、效率差异及适用场景。 ### 直接选择排序 ...
我们将探讨以下几种常见的内排序算法:冒泡排序、选择排序、插入排序、快速排序、归并排序以及堆排序。 **冒泡排序**是一种简单的排序算法,通过重复遍历数组,比较相邻元素并交换位置来逐步将最大(或最小)元素...
**插入排序** 插入排序是一种简单直观的排序算法,它的工作...通过`sort_in.txt`读取数据,然后用`isort.c`和`sort_simon.h`中的函数对数据进行排序,最后与预期结果对比,可以全面评估这两种排序算法的正确性和性能。
设计一个测试程序比较几种内部排序算法的关键字比较次数和移动次数以取得直观感受。 【基本要求】 (1)实现各种内部排序。包括冒泡排序,直接选择排序,希尔排序,快速排序,堆排序。 (2) 待排序的元素的关键字为整数...
本项目针对内部排序算法进行了性能分析,通过设计一个测试程序,对比了几种常见内部排序算法的关键字比较次数和移动次数,以帮助我们更直观地理解不同算法的效率差异。以下是关于内部排序算法的一些关键知识点: 1....
快速排序是其中一种常用的排序算法,它的平均时间复杂度为O(n log n),是目前已知的最快的排序算法之一。快速排序的基本思想是选择一个.pivot元素,将数组分成两个部分,一部分小于pivot,一部分大于pivot,然后递归...
本文将深入探讨使用C语言实现的几种常见排序算法,并基于这些算法进行性能测试,重点关注数据交换次数、程序运行时间和排序趟数。 1. **排序算法概述**: - 排序是将一组数据按照特定顺序进行排列的过程,常见的...
【内部排序算法比较课程设计】主要关注的是对六种经典的内部排序算法的性能对比,包括起泡排序、直接插入排序、简单选择排序、快速排序、希尔排序和堆排序。这些算法是计算机科学中用于对数据进行排序的基础工具,各...
本文将深入探讨C++实现的几种常见排序算法,包括经典排序、冒泡排序、插入排序、归并排序和快速排序。这些算法的理解和应用对于任何C++初学者或算法初学者来说都极其有价值。 首先,我们来讨论经典排序,它通常指的...
这个文件"JAVA关于几种排序算法的性能比较.pdf"显然探讨了不同排序算法在Java环境下的效率对比,包括直接插入排序、直接选择排序、冒泡排序、希尔排序、快速排序和堆排序。这些排序算法各有优劣,适用于不同的场景,...
希尔排序是一种基于插入排序的快速排序算法,由美国计算机科学家Donald Shell在1959年提出。它的主要思想是将待排序的元素按照一定的增量序列进行分组,然后对每组内部进行插入排序,随着增量逐渐减少,每组包含的...