冒泡排序

1、算法步骤:

1)比较相邻的元素。如果第一个比第二个大,就交换他们两个。

2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。

3)针对所有的元素重复以上的步骤,除了最后一个。

4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

2、代码

import java.util.Arrays;

/**

* 实现冒泡排序

* @author dell

*

*/

public class BubbleSort {

public static void main(String[] args) {

int[] arr = {1,200,19,55,10,22,3,7};

//API实现

Arrays.sort(arr);

System.out.println(Arrays.toString(arr));

//冒泡实现

int temp;

for(int i =0;i

for(int j = 0;j

if(arr[j]>arr[j+1]){

temp = arr[j];

arr[j]=arr[j+1];

arr[j+1]=temp;

}

}

}

System.out.println(Arrays.toString(arr));

}

}

优化的冒泡排序

由于可能在前几次就已经排好序,但是在上一种冒泡排序中仍然需要一直遍历到最后。

优化措施:设置一个标志,如果这一趟发生了交换,则为true,否则为false。明显如果有一趟没有发生交换,说明排序已经完成。

package bubbleSort;

import java.util.Arrays;

import org.junit.Test;

/**

* 冒泡排序的性能分析和算法优化(外层循环优化)

* @author dell

*

*/

public class BubbeSort02 {

@Test

public void test1(){

boolean flag = true;

int[] arr = {2,1,3,4,5};

int temp;

for (int i = 0; i < arr.length-1; i++) {

for (int j = 0; j < arr.length-1-i; j++) {

if(arr[j]>arr[j+1]){

temp=arr[j];

arr[j]=arr[j+1];

arr[j+1]=temp;

flag=false;

}

}

if(!flag){

//没有发生交换则退出循环;

break;

}

}

System.out.println(Arrays.toString(arr));

}

}

选择排序

1、算法步骤:

1)首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置

2)再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

3)重复第二步,直到所有元素均排序完毕

2、代码

public static int[] ChoseSort(int[] a) {

for (int i=0;i

int lowIndex = i;

for (int j=i+1;j

if (a[j]

lowIndex=j;

}

}

int temp = a[i];

a[i] = a[lowIndex];

a[lowIndex] = temp;

}

return a;

}

public static void main(String[] args) {

int[] a = { 10, 20, 9, 2, 22, 49, 1 };

Arrays.sort(a);

System.out.println(Arrays.toString(a));

System.out.println("================");

int[] bubbleSort = ChoseSort(a);

System.out.println(Arrays.toString(bubbleSort));

}

java代码隐藏面消除算法,java常面的几种排序算法相关推荐

  1. 算法 | 快速搞定八种排序算法与代码实现

    点击上方"阿拉奇学Java",选择"置顶或者星标"  每天早晨00点00分,与你相约! 往日回顾:不敢相信,相同 SQL 下 Mybatis 查询结果和数据库竟 ...

  2. Java常用的八种排序算法与代码实现

    在Java的时候,对于排序的应用需要熟练的掌握,这样才能够确保Java学习时候能够有扎实的基础能力.那Java有哪些排序算法呢?本文小千就来详细说说Java经典的8种排序算法. 经典的排序算法有八种, ...

  3. Java常见的几种排序算法-插入、选择、冒泡、快排、堆排等

    本文就是介绍一些常见的排序算法.排序是一个非常常见的应用场景,很多时候,我们需要根据自己需要排序的数据类型,来自定义排序算法,但是,在这里,我们只介绍这些基础排序算法,包括:插入排序.选择排序.冒泡排 ...

  4. java 算法 排序算法_Java七种排序算法以及实现

    Java常见七种排序算法以及实现 最近学习一些排序算法,怕自己以后忘记就打算整理起来供自己复习 萌新一枚学习Java没多久,以下仅供参考.如有错误希望大佬指正,欢迎大家在评论区交流探讨. 1.冒泡排序 ...

  5. Java 八种排序算法比较实践

    写这篇文章是因为面试时经常会问这个问题,但是工作中也没用到过,所以一直是一知半解.但是我是属于比较较真的人,这次下定决心要把它们搞明白.知识在于积累,多点知识对自己总是有好处的. 我比较好奇的是,这几 ...

  6. 排序算法java 简书_史上最全经典排序算法总结(Java实现)

    查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中.因为其实现代码较短,应用较常见.所以在面试中经常会问到排序算法及其相关的问题.但万变不离其宗,只要熟悉了思想,灵活运用也不是难事.一般在 ...

  7. java实现apriori算法_七大经典、常用排序算法的原理、Java 实现以及算法分析

    0. 前言 大家好,我是多选参数的程序员,一个正再 neng 操作系统.学数据结构和算法以及 Java 的硬核菜鸡.数据结构和算法是我准备新开的坑,主要是因为自己再这块确实很弱,需要大补(残废了一般) ...

  8. java中常用的几种排序算法--常见笔试面试

    转载:http://blog.csdn.net/ygc87/article/details/7208082 以下列出Java中常用的几种排序算法,只是简单实现了排序的功能,还有待改进,望指教(以下均假 ...

  9. Java学习 第三章 数组(三)排序算法

    ** Java学习 第三章 数组(三)排序算法 ** 主要内容:排序算法.排序算法横向比较.Arrays工具类的使用.数组常见异常 1.数组中涉及到的常见算法:排序算法 1.1 排序算法分类:内部排序 ...

最新文章

  1. 三台机器之间root用户ssh互信配置
  2. 利用OpenCV进行边缘检测
  3. [原创] 浅谈ETL系统架构如何测试?
  4. Esp32-CAM(ESP32带camera)使用说明
  5. Cannot resolve the collation conflict between SQL_Latin1_General_CP1_CI_AS and Latin1_General_100...
  6. Ocelot中文文档入门
  7. FA_手工明细增加固定资产(流程)
  8. android png转灰度,Android提高之使用NDK把彩图转换灰度图的方法
  9. 错误整理:No plugin found for prefix 'jetty' in the current project and in the plugin groups
  10. Ionic生命周期与注意点
  11. c 语言ifelse语句例子,C if else 语句
  12. Android VelocityTracker简介
  13. 撒大飒飒撒大声地撒萨达
  14. java释放资源_JAVA 手动释放资源问题
  15. 生成的html怎么做成桌面背景,定时改换图片的桌面背景 html页面
  16. python 定时器、每天凌晨3点执行方法_python 定时器,实现每天凌晨3点执行的方法...
  17. ZBar源码分析(二)
  18. pdf加密怎么加?在线免费对PDF文档加密
  19. 设计模式-03(软件设计原则)
  20. 一直以来伴随我的一些学习习惯(四)——程序员的知识结构

热门文章

  1. oracle sequences优化_性能优化-Oracle RAC中的Sequence Cache问题
  2. python 表格格式输出_Python笔记---DAY3:格式化输出、for循环、列表操作
  3. tomcat 在WIN10 上运行出现500错误的解决方法
  4. H3C服务器系统配置ip,H3C交换机DHCP 服务器动态分配地址典型配置指导
  5. java daemon线程的作用_JAVA DAEMON线程的理解
  6. c#namespace
  7. java 匿名委托_委托,匿名方法,λ 表达式
  8. dxf转nc代码软件_Window绝赞的6款软件,效率加班党必备,快到惊人!
  9. 解决cannot import name ‘finance‘ from ‘matplotlib‘报错与问题解析
  10. Nginx 502报错(django+nginx,而非php-fmp)