1 package com.test4;
  2 import java.util.*; //Calendar 显示时间
  3 /**
  4  * @author qingfeng
  5  * 功能:冒泡排序
  6  */
  7 public class Bubble {
  8
  9     public static void main(String[] args) {
 10         // TODO Auto-generated method stub
 11         //int arr[] = {10,1,-20,89,-1,78,-45};
 12
 13         //随机产生大量数据
 14
 15         int len = 50000;
 16         int[] arr = new int[len];
 17
 18
 19         for(int i=0; i<len; i++)
 20         {
 21             //产生1到1000的数
 22             arr[i] = (int)(Math.random()*1000);
 23         }
 24         /*
 25         for(int i=0; i<len; i++)
 26         {
 27             System.out.print(arr[i]+" ");
 28         }
 29         System.out.println();
 30         */
 31         BubbleSort bs = new BubbleSort();
 32         //显示排序前的时间
 33         Calendar time = Calendar.getInstance();//获取时间实例
 34         System.out.println("排序前的时间为:"+time.getTime());//50000个数排序4秒
 35         bs.sort(arr);
 36
 37         /*
 38         SelectSort  ss = new SelectSort(); //50000个数排序1秒
 39         ss.sort(arr);
 40         */
 41         /*
 42         int a = 1;
 43         bs.test(a);
 44         System.out.println("a的值为:"+a);//a的值为1 并不是2 因为是值传递
 45         */
 46
 47         /*
 48         System.out.println("-----------------------------");
 49         for(int i=0; i<arr.length; i++)
 50         {
 51             System.out.print(arr[i]+" ");
 52         }
 53         System.out.println();
 54         */
 55         //显示排序前的时间
 56         Calendar time2 = Calendar.getInstance();//获取时间实例
 57         System.out.println("排序后的时间为:"+time2.getTime());
 58     }
 59 }
 60 //冒泡排序
 61 class BubbleSort
 62 {
 63     public void test(int a)//值传递
 64     {
 65         a++;
 66     }
 67     public void sort(int arr[]) //引用传递(复合类型)
 68     {
 69         int temp;
 70
 71         //冒泡排序
 72         //外层循环:n个数  n-1趟排序
 73         for(int i=0; i<arr.length-1; i++)
 74         {
 75             //内层循环:若前比后打则交换   (每趟比前一趟少排一个数:所以"-i")
 76             for(int j=0; j<arr.length-1-i; j++)
 77             {
 78                 if(arr[j]>arr[j+1])
 79                 {
 80                     temp = arr[j+1];
 81                     arr[j+1] = arr[j];
 82                     arr[j] = temp;
 83                 }
 84             }
 85         }
 86     }
 87 }
 88 //选择排序
 89 class SelectSort
 90 {
 91     public void sort(int arr[])//引用传递
 92     {
 93         //外层循环:n个数 n-1趟排序  最后一个数不要再次排序
 94         for(int i=0; i<arr.length-1; i++)
 95         {
 96             int min=arr[i];
 97             int minIndex = i;
 98
 99             int j;
100             int temp;
101             //内层循环:选择min值
102             for(j=i+1; j<arr.length; j++)
103             {
104                 if(min > arr[j])
105                 {
106                     min = arr[j];
107                     minIndex = j;
108                 }
109             }
110             //最小值和每趟第一个值交换
111             temp = arr[i];
112             arr[i] = arr[minIndex];
113             arr[minIndex] = temp;
114         }
115     }
116
117 }

转载于:https://www.cnblogs.com/qingfengzhuimeng/p/6495762.html

冒泡排序选择排序 以及时间效率对比相关推荐

  1. 【排序算法】冒泡排序|选择排序|插入排序|希尔排序

    文章目录 冒泡排序 选择排序 插入排序 希尔排序 冒泡排序   第一个元素开始向第二个元素比较,若大于则交换位置,不大于则不动.然后第二个元素和第三个元素比较,再然后第三个元素和第四个元素比较-一直比 ...

  2. c语言数组项目按身高排序,过三关 Java冒泡排序选择排序插入排序小练习

    材料:猴子排序,按照身高来从小到大来排序. 第一关: 老猴子带领小猴子队伍按大小逐一比较,交换,开始高矮排列队伍.(冒泡排序) 第二关: 太慢了,给第一关增加难度,进行选择排序 第三关: 最后,尝试选 ...

  3. 十大经典排序算法详解(一)冒泡排序,选择排序,插入排序

    养成习惯,先赞后看!!! 你的点赞与关注真的对我非常有帮助.如果可以的话,动动手指,一键三连吧!!! 目录 1.算法的评判标准 2.排序算法的分类 3.十大经典排序算法-冒泡排序,选择排序,插入排序 ...

  4. 冒泡排序选择排序插入排序

    目录 冒泡排序 选择排序 插入排序 冒泡排序 冒泡排序(最好是O(n), 最坏O(n2)) 原理: 拿自己与上面一个比较,如果上面一个比自己小就将自己和上面一个调换位置,依次再与上面一个比较,第一轮结 ...

  5. 冒泡排序、插入排序、选择排序的时间、空间复杂度以及优化方案

    文章目录 冒泡排序 插入排序 选择排序 冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 需求:{4,5,6,3,2,1} 排序后:{1,2,3,4,5,6} 排 ...

  6. C语言——十四种内部排序算法【直接插入排序-冒泡排序-选择排序-插入排序-希尔排序-归并排序-快速排序-堆排序-折半插入排序-二分查找-路插入排序-表插入排序-简单选择排序-直接选择排序-树形选择】

    目录: 一:插入排序 A:直接插入排序 1.定义: 2.算法演示 实例1: 3.基本思想 4.排序流程图 实例1: B:希尔排序 1.定义: 2.算法演示 实例2: C:其他插入排序 a:折半插入排序 ...

  7. 冒泡排序 选择排序 快速排序(C语言)

    #include <stdio.h> #include <stdlib.h> #include <time.h> //用到了time函数#define arrayS ...

  8. 了解冒泡排序选择排序

    冒泡排序 依次比较相邻的两个数,将小数放在前面,大数放在后面. 双层循环比较,然后交换位置 注意:冒泡排序比较的是相邻的两个数,而选择排序比较的整个队列中最大或者是最小的数进行交换. 第一趟:首先比较 ...

  9. 第三次学JAVA再学不好就吃翔(part59)--冒泡排序选择排序以及二分查找

    学习笔记,仅供参考 文章目录 数组高级冒泡排序 数组高级选择排序 二分查找法 数组高级冒泡排序 冒泡排序原理:设数组中有n个元素,从第一个元素开始,对相邻元素进行两两比较,两个元素中大的往后放,第一次 ...

最新文章

  1. mysql日常错误信息解决方法:InnoDB: and force InnoDB to continue crash recovery here.
  2. ABAP Netweaver Webcontent path的determine逻辑
  3. android listview中item倒计时,GitHub - TangAnna/ListViewTimer: 列表中每一个item都有计时器 (可实现倒计时或者计时器的功能)...
  4. linux怎么安装32电脑上,linux – 如何在Ubuntu上安装mingw32?
  5. Python | 这是过七夕吗?这是趁机学习一下下,就一下~~
  6. 如何获取android源码
  7. rope 实用把一段区间的数字整体搬到序列中的一段的时候用
  8. 使用Sphinx对MySQL数据库进行全文检索
  9. ArcGIS中输出指定比例尺图片
  10. 怎样进入金蝶服务器修改参数,金蝶KIS专业版启用后如何后台修改系统参数
  11. php语言标记可用什么符号,【单选题】不可用作PHP语言标记用的是什么( )符号 A. ? B. 〈php C. ?...
  12. 网络口碑营销从“可以做”、“值得做”到了“必须做好”的阶段!
  13. 计算机的记事本和写字板的功能,记事本和写字板有什么不同?功能上
  14. 开源中Web开发的各种资源
  15. 如何在终端里面使用ping来查局域网活动ip
  16. 浏览器禁用cookie后session还能用吗?cookie与session区别
  17. 一个日本人写的插件:Breath Controller
  18. 老曹眼中的“团队管理”
  19. 【开发环境】(基于Hexo)个人博客主题(Hexo Fluid)更换
  20. u盘安装盘的制作汇总

热门文章

  1. bashrc文件中环境变量配置错误,导致linux命令无法正常使用的解决方案
  2. 如何将本地项目上传至GitHub
  3. 【图像处理】数字图像处理之颜色
  4. 【Linux】一步一步学Linux——let命令(223)
  5. 【Linux】一步一步学Linux——ssh-copy-id命令(180)
  6. oracle里返回值吗,Oracle有返回值的存储过程 | 学步园
  7. android点九,android关于点九(.9)图片
  8. 每天一道LeetCode-----生命游戏
  9. 每天一道LeetCode-----化简路径
  10. iOS 12.0-12.1.2 完整越狱支持 Cydia