这几种排序方法分别为:冒泡排序,选择排序,插入排序,快速排序

1.冒泡排序:

思想:简单的说就是想办法把一堆数据中最大的数不停地往后边排。

代码:

class Bubble{
//  /**
//   * 测试方法
//   */
//  public void test(int i){
//      i++;
//      System.out.println(i);
//  }
public void sort(int arr[]){
int temp = 0;//设置这个变量的目的是为了实现数值的交换
//冒泡排序
for(int i=0;iarr[j+1]){
//交换
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
//      //遍历数组输出最后结果
//              for(int i=0;i

  2.选择排序:


   思想:在给定的一堆数据中找到最小的(或者最大的)数跟数据的第一个数交换(最后一个数交换),然后第二次再在排好的数据中(不要把排好的第一个数算在其中)找最小的(或者最大的)数跟数据的的第二个数(倒数第二个数)交换,以此类推,不断的进行下去,最后就OK了。
   代码:

/**
* 选择排序类
*/
class Select{
public void sort(int arr[]){
int temp = 0;
for(int j=0;jarr[k]){
//修改最小
min = arr[k];
minIndex = k;
}
}//当退出for就找到了这次的最小值
temp = arr[j];
arr[j] = arr[minIndex];
arr[minIndex] = temp;
}
//      //遍历数组 输出最后结果
//      for(int i=0;i
3.插入排序:
 

  
   思想:把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素(那肯定是有序的),无序表中有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。
 

    代码:

/**
* 插入排序类
*/
class InsertSort{
//插入排序方法
public void sort(int arr[]){
for(int i=0;i=0&&insertVal

4.快速排序:
    思想:通过一趟排序将要排序的数据分隔成独立的两部分,其中一部分的所有的数据都要比另一部分的所有的数据都要小,然后再对于这两部分分别进行以上的操作,以此达到整个数据变成有序的数据。简单地说就是在一堆数据中找到这些数据中中间的那个数,然后把比这个中间数大的放在中间数的右边,比它小的数放在中间数的左边,然后再次递归一样的对于左边的数,和右边的数进行以上操作。

    代码:

**
* 快速排序类
*/
class QuickSort{
//快速排序方法
public void sort(int left,int right,int [] array){//传进的是数组最左边的下标,数组最右边的下标,数组
int l = left;
int r = right;
int pivot = array[(left+right)/2];
int temp = 0;
while(lpivot) r--;
if(l>=r) break;
temp = array[l];
array[l] = array[r];
array[r] = temp;
if(array[l]==pivot) --r;
if(array[r]==pivot) ++l;
}
/*System.out.println("the current array is");
for(int i=0;i<5;i++){
System.out.print(" "+array[i]);
}*/
if(l==r){
l++;
r--;
}
if(leftl) sort(l,right,array);
}
}

最后,总体上分析一下这四种排序的效率:
    速度(由小到大):
       冒泡,选择,插入,快速
    并且这些排序会随着数据量的增大,速度优势会更加明显。
     快速排序速度比较快的原因是:前三种排序多是单个进程进行的,而快速排序是多进      程来实现排序的。但是快速排序进行排序时会占用特别多的内存(当你运用快速排序对一个特别大的数组进行排序时,你会发现你的内存突然间就上去了)。所以说快速排序的效率并不高,因为它会占用特别多的内存和CPU。
注意:在排序时,如果数据量比较大的话,就不要打印了,因为打印会占用特别多的CPU。

常用的几种简单的内部排序方法相关推荐

  1. php三个数字比较大小排序,php中常用的4种实现数字大小排序的冒泡选择等算法函数代码...

    分别用冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中按照从小到大的顺序进行排序. 本站收录这篇文章php中常用的4种实现数字大小排序的冒泡选择等算法函数代码,详细解说文章中相关排序 冒泡 ...

  2. 选择排序(Selection sort)是一种简单直观的排序算法

    选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大 ...

  3. 算法 - 内部排序方法总结

    分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 各种排序方法的性能比较 排序方法 最好时间复杂度 平 ...

  4. 内部排序 (一):各种内部排序方法的比较

    作为数据结构的课程笔记,以便查阅.如有出错的地方,还请多多指正! 目录 各种内部排序方法的比较 地址排序 (基于关键字比较的) 内部排序在最坏情况下的最快速度 各种内部排序方法的比较 nnn 较小/基 ...

  5. 掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等)...

    掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等). 数组高级以及Arrays(掌握) 排序方法 空间复杂度 时间复杂度 稳定性 插 入 排 序 ...

  6. 一种简单的路口网格生成方法(Unity)

    一种简单的路口网格生成方法(Unity) 1. 前言 2. 思路 3. 实现 3.1 测试场景的搭建 3.2 路口中心的多边形 3.3 斑马线部分的扩展 4. 测试效果 5. 网格生成 1. 前言 最 ...

  7. GIT将本地项目上传到Github(两种简单、方便的方法)

    GIT将本地项目上传到Github(两种简单.方便的方法) 一.第一种方法: 首先你需要一个github账号,所有还没有的话先去注册吧! https://github.com/ 我们使用git需要先安 ...

  8. git学习(10):Git的使用--如何将本地项目上传到Github(两种简单、方便的方法)

    将本地项目上传到Github(两种简单.方便的方法) 一.第一种方法: 首先你需要一个github账号,所有还没有的话先去注册吧! https://github.com/ 我们使用git需要先安装gi ...

  9. Win7系统怎么截图?几种简单的win7截图方法

    截图作为最为常见的电脑操作,一般人现在主要采用qq自带的截图进行,但如果没有网络,那么Win7系统怎么截图?下面由小编我为大家介绍几种简单的截图方法. 一.利用键盘上Print Screen截图 1. ...

最新文章

  1. php mysql xa_分布式事务之——MySQL对XA事务的支持
  2. Hadoop实例之利用MapReduce实现Wordcount单词统计 (附源代码)
  3. asp.net core中负载均衡场景下http重定向https的问题
  4. 面试官:final、finally、finalize 有什么区别?
  5. android获取未知字符串,android – 未知的URL内容:// downloads / my_dow...
  6. 菜鸟学Java笔记1
  7. win10家庭版远程桌面_win10 家庭版使用RDPWrap开通远程桌面服务
  8. HIT Software Construction Review Notes(0-1 Introduction to the Course)
  9. teechart mysql_TeeChart的X轴为时间,多个Y轴的显示
  10. 色彩原理-色相、明度、纯度
  11. Java邮箱验证码注册
  12. 2020考研初试成绩2月中旬起陆续公布,6点需注意
  13. 关于IE浏览器的一些思路
  14. appcan 文件下载到根目录(pdf)
  15. 全文翻译:Deep Learning for Image Super-resolution: A Survey
  16. 苹果6运行内存是多少_安卓手机12GB运行内存为何打不过苹果的4GB?有哪些原因?...
  17. 前台访问后台路径错误的解决
  18. 【UML】-- 活动图练习题含答案(打印合同、请假、公司评审、签订合同、软件发布、会见客户)
  19. 小型软件团队该如何分工(转)
  20. HOOK api readprocessmemory and writeprocessmemory

热门文章

  1. JQuery中.css()与.addClass()设置样式的区别
  2. php的浏览历史怎么做,php浏览历史记录的方法
  3. node内存配置(--max-old-space-size)
  4. MappedByteBuffer VS FileChannel 孰强孰弱?
  5. 创业活动平台,2019路演活动报名网站
  6. MongoDB日志文件过大
  7. Visual Assist X插件
  8. 基于HTML5 的人脸识别活体认证
  9. SpringBoot自动化配置之一:SpringBoot内部的一些自动化配置原理
  10. python之字典使用方法总结