三种排序方法用java实现

  用三种方法实现几个数的排序:冒泡排序,选择排序,调用Java里的库函数

1、 冒泡排序:顾名思义,就是将小的数一步一步往上冒,大的数一个个往下沉,下面是自己写的对冒泡排序的理解,字丑将就看一下吧。

2、选择排序:以从小到大为例,定义一个变量min_inter,用于记录最小值的下标,找到最小的数放在第0位,第二小放在第1位,后面依次。

3、直接调用:Arrays.sort(num3);需要导入import java.util.Arrays;

下面是代码:

 1 import java.util.Arrays;
 2
 3 /**
 4 *排序法,冒泡,选择
 5 *从小到大
 6 *@author:Archer-LCY
 7 *@date:2018年1月16日下午12:07:09
 8 */
 9 public class Sortway {
10     public static void main(String[] args) {
11         final int N=50000;//常量
12         int [] num1=new int[N];
13         int [] num2=new int[N];
14         int [] num3=new int[N];
15         for(int i=0;i<num1.length;i++) {
16             num1[i]=(int)(Math.random()*N*10);//随机生成N个数,为比较时间效率,N在这先取50000
17             num2[i]=num1[i];
18             num3[i]=num1[i];
19         }
20         long star_time=System.currentTimeMillis();//计算开始时间
21         //方法一:冒泡
22         for(int i=0;i<num1.length;i++) {//冒泡排序
23             for(int j=0;j<num1.length-i-1;j++) {
24                 if(num1[j]>num1[j+1]) {
25                     int temp=num1[j];//在java中可以临时定义一个变量,若前面一个数比后面大两个数交换位置
26                     num1[j]=num1[j+1];
27                     num1[j+1]=temp;
28                 }
29             }
30         }
31         long end_time=System.currentTimeMillis();
32         System.out.println("冒泡排序耗时:"+(end_time-star_time)+"毫秒");//计算结束时间,注意end_time-star_time一定要加(),否则有错
33
34         //方法二:选择
35         long star_time2=System.currentTimeMillis();
36                 for(int i=0;i<num1.length-1;i++) {//选择排序
37                     int min_inter=i;//记录该组比较中最小数的下标
38                     for(int j=i+1;j<num1.length;j++) {
39                         if(num1[i]>num1[j]) {
40                             min_inter=j;
41                         }
42                     }
43                     //找到最小的数后放入第0个,第二小放在第1个,后面依次
44                     int temp=num2[i];
45                     num2[i]=num2[min_inter];
46                     num2[min_inter]=num2[i];
47                 }
48         long end_time2=System.currentTimeMillis();
49         System.out.println("选择排序耗时:"+(end_time2-star_time2)+"毫秒");
50         //方法三:调用java库里的函数,也是速度最快的
51         long star_time3=System.currentTimeMillis();
52         Arrays.sort(num3);//一句解决,需要导入import java.util.Arrays;
53         long end_time3=System.currentTimeMillis();
54         System.out.println("Arrays.sort()耗时:"+(end_time3-star_time3)+"毫秒");
55
56
57 //        //输出,为计算比较三种排序的时间效率,先不打印
58 //        for(int i=0;i<num3.length;i++) {
59 //            if(i%10==0)
60 //                System.out.println();
61 //            else
62 //                System.out.print("\t");
63 //            System.out.print(num3[i]);
64 //        }
65
66
67     }
68 }

下面是这三种排序算法所耗时间:

从运行结果上来看,冒泡排序所耗时间最长,其次是选择排序,冒泡排序和选择排序相比较,冒泡排序时间更长主要是因为冒泡排序交换次数更多,所耗时间自然就更长了。

原文地址:https://www.cnblogs.com/archer-lcy/p/8304902.html

时间: 2024-12-02 19:34:30

三种排序方法用java实现的相关文章

三种排序方法(c语言)

1 #include "stdio.h" 2 void main() 3 {void read_data(int a[],int n); 4 void write_data(int a[],int n); 5 void comp(int a[],int n); 6 void insert(int a[],int n); 7 void bubble(int a[],int n); 8 int i,n=0,a[200]; 9 printf("请输入元素个数:"); 10

PHP中数组的三种排序方法

说明:找到最大的数,排列到最后面,然后继续找 例: $arr = array(3,5,-1,0,2); for($i=0;$i<count($arr)-1;$i++){ for($j=0;$j<count($arr)-1-$i;$j++){ if($arr[$j]>$arr[$j+1]){ $temp = $arr[$j]; $arr[$j]=$arr[$j+1]; $arr[$j+1]=$temp; } } } 理解: 3,5,-1,0,2 //从第一个数开始往后比较,如果比后面的数大

三种排序方法(冒泡、选择、插入)

//冒泡排序class Bubble{    int temp=0;    public void sort (int arr1[])    {        //控制外层循环        for(int i=0;i<arr1.length-1;i++)        {            //控制内层循环            for(int j=0;j<arr1.length-1-i;j++)            {                if(arr1[j]>arr

Java中Map的三种遍历方法

Map的三种遍历方法: 1. 使用keySet遍历,while循环: 2. 使用entrySet遍历,while循环: 3. 使用for循环遍历. 告诉您们一个小秘密: (下↓面是测试代码,最爱看代码了,啰嗦再多也没用) 一般人我不告诉他哦. import java.util.*; //0 我的Main界面 public class MapTraverse { public static void main(String[] args) { String[] str = {"I love you

JAVA中运用数组的四种排序方法

JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法.冒泡法.选择排序法.插入排序法. 快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现. 冒泡法是运用遍历数组进行比较,通过不断的比较将最小值或者最大值一个一个的遍历出来. 选择排序法是将数组的第一个数据作为最大或者最小的值,然后通过比较循环,输出有序的数组. 插入排序是选择一个数组中的数据,通过不断的插入比较最后进行排序.下面我就将他们的实现方法一一详解供大家参考. <1>利用Arrays带有的排序方法快

(java)selenium webdriver学习---三种等待时间方法:显式等待,隐式等待,强制等待

selenium webdriver学习---三种等待时间方法:显式等待,隐式等待,强制等待 本例包括窗口最大化,刷新,切换到指定窗口,后退,前进,获取当前窗口url等操作: import java.util.Set;import java.util.concurrent.TimeUnit; import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.openqa.selenium.By;import org.openqa.

C# list排序的三种实现方法

原文地址:http://www.cnblogs.com/bradwarden/archive/2012/06/19/2554854.html 首先先介绍一下平时最常用的几种排序方法. 第一种:实体类实现IComparable接口,而且必须实现CompareTo方法 实体类定义如下: 1 class Info:IComparable 2 { 3 public int Id { get; set; } 4 public string Name { get; set; } 5 6 public int

PHP开发之递归算法的三种实现方法

递归算法对于任何一个编程人员来说,应该都不陌生.因为递归这个概念,无论是在PHP语言还是Java等其他编程语言中,都是大多数算法的灵魂.对于PHP新手来说,递归算法的实现原理可能不容易理解.但是只要你了解掌握了这个算法原理,就可以灵活运用递归算法实现编程中的多种功能比如实现无限分类等.递归也是入门者最需要掌握的一个基础算法技巧.下面就通过具体代码示例为大家介绍PHP递归算法也是PHP递归排序的三种实现方法. 方法一:静态变量 <?phpfunction call(){static $i=1;ec

C#使用DataSet Datatable更新数据库的三种实现方法

本文以实例形式讲述了使用DataSet Datatable更新数据库的三种实现方法,包括CommandBuilder 方法.DataAdapter 更新数据源以及使用sql语句更新.分享给大家供大家参考之用.具体方法如下: 一.自动生成命令的条件 CommandBuilder 方法 a)动态指定 SelectCommand 属性 b)利用 CommandBuilder 对象自动生成 DataAdapter 的 DeleteCommand.InsertCommand 和 UpdateCommand