常见的算法有非常多,今天我们就一起看看常见的算法之冒泡排序。
冒泡排序的主要核心思想就是:
比较相邻两个元素,如果前一个元素的值比后一个元素的值大,则进行交换,经过对每个元素的比较,最后将最大的元素设置成最后一个元素,循环重复该操作,最后形成从小到大排序。

            下面来看看我们的实例代码:1、准备我们的数组2、准备数组的常用操作方法3、编写冒泡排序算法4、测试冒泡排序算法的正确性;package com.zcp.ch02;

/**

  • @author Administrator
  • 冒泡排序的实现
    */
    public class BubbleArray {

    //数组
    private long[] arr = null;

    //数组中有效数据的大小
    private int elems;
    public BubbleArray() {
    arr = new long[50];
    }

    public BubbleArray(int length){
    arr = new long[length];
    }

    /**

    • 插入数据的操作
    • @param value
      */
      public void insert(long value){
      arr[elems] = value;
      elems++;
      }

    /**

    • 查找指定的数据,如果能够查找到则返回数组的坐标,否则返回-1.
    • @param value
    • @return
      */
      public int find(long value){
      int i = 0;
      for(i=0;i<elems;i++){
      if(value==arr[i])
      break;
      }

      if(i >(elems-1)){
      return -1;
      }

      return i;

    }

    /***

    • 删除数据的操作,删除成功返回true,删除失败返回false
    • @param value
      */
      public boolean delete(long value){

      int key = find(value);
      if(key == -1){
      System.out.println("删除数据失败,未查找到要删除的数据");
      return false;
      }
      for (int i = key; i < elems; i++) {
      arr[i] = arr[i+1];
      }
      elems--;
      return true;

    }

    /***

    • @param oldValue
    • @param newValue
    • @return 如果修改成功返回true,修改失败返回false
      */
      public boolean changeValue(long oldValue,long newValue){
      int key = find(oldValue);
      if(key == -1){
      System.out.println("需要修改的数据不存在,修改失败");
      return false;
      }
      arr[key] = newValue;
      return true;
      }

    /**

    • 实现冒泡排序的算法
    • 该方法中的i表示的是冒泡排序的比较次数
    • 该方法中的j表示的是冒泡排序的两两的比较次数,至于j<elems-i-1,为什么要减1,主要是下面两两比较的时候需要j+1,
    • 否则就数组越界了
      */
      public void bubbleSort(){

      for (int i = 0; i < elems-1; i++) {

      for (int j = 0; j < elems-i-1; j++) {if(arr[j]>arr[j+1]){long tmp = arr[j];arr[j] = arr[j+1];arr[j+1] = tmp;}
      }

      }
      }

    /**

    • 该方法主要是变量数组并显示
      */
      public void disPlay(){
      for (int i = 0; i < elems; i++) {
      System.out.print(arr[i]+ " " );
      }
      System.out.println();
      }

}

测试代码如下:
package com.zcp.ch02;

public class TestBubbleMain {

public static void main(String[] args) {BubbleArray bubbleArray = new BubbleArray();bubbleArray.insert(10);bubbleArray.insert(50);bubbleArray.insert(80);bubbleArray.insert(2);bubbleArray.insert(5);bubbleArray.disPlay();bubbleArray.bubbleSort();System.out.println("冒泡排序后的数据如下:");bubbleArray.disPlay();
}

}

转载于:https://blog.51cto.com/7298246/2154933

java常见数据算法_冒泡排序相关推荐

  1. Java常见GC算法_垃圾收集器及内存分配_G1垃圾收集器

    常见GC算法 引用计数法: 每个对象都有一个计数器, 对象被引用一次, 计数器+1, 当对象引用失败一次. 计数器-1, 当对象计数器等于0, 说明对象没有被应用, 就可GC 优: 运行过程中, 可随 ...

  2. Java常见排序算法之插入排序

    一.概述 本节由小千给大家分享Java常见排序算法之插入排序,之前我们说过排序是算法中的一部分.所以我们学习排序也是算法的入门,为了能让大家感受到排序是算法的一部分,我举个例子证明一下:比如麻将游戏, ...

  3. Java常见排序算法

    Java常见排序算法 转载于:https://www.cnblogs.com/hfultrastrong/p/7829889.html

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

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

  5. java 哈希算法_选择Java密码算法第1部分-哈希

    java 哈希算法 抽象 这是涵盖Java加密算法的三部分博客系列文章的第1部分. 该系列涵盖如何实现以下功能: 使用SHA–512散列 使用AES–256的单密钥对称加密 使用RSA–4096的公钥 ...

  6. 两个for做数据插入_冒泡排序、选择排序、插入排序

    排序算法分类 十种常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序. 线性时间非比较类排序:不 ...

  7. 常见排序算法:冒泡排序

    为什么80%的码农都做不了架构师?>>>    从这篇文章开始,我会陆陆续续将我所能用Java实现的算法在这里简单做个梳理,也算温故而知新吧.受个人水平和时间限制,可能会有错漏,欢迎 ...

  8. java常见性能优化_十大最常见的Java性能问题

    java常见性能优化 Java性能是所有Java应用程序开发人员都关心的问题,因为快速使应用程序与使其正常运行同等重要. 史蒂文·海恩斯(Steven Haines)使用他在Java性能问题上的个人经 ...

  9. 常见排序算法_解释的算法-它们是什么以及常见的排序算法

    常见排序算法 In its most basic form, an algorithm is a set of detailed step-by-step instructions to comple ...

最新文章

  1. Python3 网络编程(转载)
  2. zabbix监控apache
  3. console.log()不显示结果_RNA结合蛋白与RNA的缠绵故事,教你不做实验发文章
  4. python3-Anaconda3 基本使用
  5. 如何提高微信公众号流量主收入
  6. python与excel-超简单:用Python让Excel飞起来
  7. firefox与ie的javascript兼容性编程汇编【转载】
  8. (11)机器学习_Kmeans聚类算法
  9. 代码检测vc2013环境是否已经安装了
  10. Android Studio查看Android源码
  11. linux下pcie串口卡驱动安装,pci串口卡万能驱动
  12. 【原版教材•中英对照】密度泛函理论的化学家指南(第二版)— 传统量子力学的化学家们将从这篇得到特别的启发
  13. mysql中添加字段
  14. ai背景合成_AI突破次元壁又火了!《飞屋环游记》动漫角色一秒变真人,网友:小罗的“猫王发型”有点酷...
  15. [深入理解Android卷二 全文-第四章]深入理解PackageManagerService
  16. 走进C 语言:你知道C语言程序是如何执行的吗?
  17. 如何mp3音乐格式转换成ogg格式
  18. Hadoop分布式集群搭建以及案例运行-fs操作
  19. matplotlib简单做图
  20. Matplotlib输出中文显示问题

热门文章

  1. kotlin函数_Kotlin函数
  2. shell脚本中执行命令_如何在Shell脚本中执行命令?
  3. android 崩溃捕获_Android从相机和图库捕获图像
  4. 迅捷cad_迅捷套装
  5. C# 窗体半透明,控件不透明
  6. 连通性问题--Algorithms IN C读书笔记
  7. C++基础之函数的默认参数,什么是函数默认参数?
  8. TDiocpCoderTcpServer 使用
  9. Windows10与Vmware配置Windowsserver2003共享磁盘
  10. Tomcat服务器学习和使用(一)