java常见数据算法_冒泡排序

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

            下面来看看我们的实例代码:
            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();
}

}

原文地址:http://blog.51cto.com/7298246/2154933

时间: 2024-09-29 00:48:37

java常见数据算法_冒泡排序的相关文章

java常见数据算法_选择排序

选择排序的原理:遍历所有的元素,得到最小的元素,并将最小的元素与左边第一个元素进行交换,再次遍历除了第一个位置的所有元素,得到最小的元素,与左边第二个元素进行交换.当进行第二次遍历的时候,将最小的元素与左边的第二个元素进行交换,如此循环遍历,即可得到排序后的元素.Demo实现的基本基本步骤:1.准备数组2.编写常见的数组操作方法3.编写选择排序的方法4.测试选择排序具体参考如下:package com.zcp.ch03; /** @author Administrator 冒泡排序的实现*/pu

我的Java开发学习之旅------&gt;Java经典排序算法之冒泡排序

冒泡排序(Bubble Sort)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端. 一.算法原理 冒泡排序算法的运作如下: 1.比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 3.

Java常见排序算法之Shell排序

在学习算法的过程中,我们难免会接触很多和排序相关的算法.总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的. 从今天开始,我们将要进行基本的排序算法的讲解.Are you ready?Let‘s go~~~ 1.排序算法的基本概念的讲解 时间复杂度:需要排序的的关键字的比较次数和相应的移动的次数. 空间复杂度:分析需要多少辅助的内存. 稳定性:如果记录两个关键字的A和B它们的值相等,经过排序后它们相对的位置没有发生交换,那么我们称这个排序算法是稳定的. 否则我们称这个排序算法是不稳定的

Java常见排序算法之归并排序

在学习算法的过程中,我们难免会接触很多和排序相关的算法.总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的. 从今天开始,我们将要进行基本的排序算法的讲解.Are you ready?Let‘s go~~~ 1.排序算法的基本概念的讲解 时间复杂度:需要排序的的关键字的比较次数和相应的移动的次数. 空间复杂度:分析需要多少辅助的内存. 稳定性:如果记录两个关键字的A和B它们的值相等,经过排序后它们相对的位置没有发生交换,那么我们称这个排序算法是稳定的. 否则我们称这个排序算法是不稳定的

Java再学习-算法之冒泡排序

 Java排序,据说有八大排序,小编这次系列博客可能讲不了全部,我将自己理解比较到位的几个排序,和大家分享一下吧.今天来说一说冒泡排序,其实冒泡排序属于交换排序的一种,冒泡排序是最经典的交换排序,它的算法思想是:(假设数据存放在数组a[n]中) 1.比较a[0]和a[1],如果a[0]>a[1],则交换a[0],a[1],然后比较新的a[1](可能是原来的a[0])和a[2],如果a[1]>a[2],则交换a[1],a[2],以此类推,直到a[n-2]和a[n-1]比较完毕,这样,a中的最大数

平安陆金所java 大数据 算法 android开发

java工程师-互联网方向 工作职责 1 参与产品需求分析.网站系统的设计方案: 2 参与.协助项目组长共同完成或带领项目小组承担任务的系统功能设计和数据库设计 3 独立完成个人承担模块或项目的开发和测试 任职要求 重点大学本科及以上学历,计算机相关专业优先 有3年以上JAVA WEB开发工作经验:有高访问量,高负载网站系统开发经验者优先 1. 精通Java Core/数据结构及算法/J2EE/Struts2/WebWork 2/JSP/Servlet/Java TCP/IP Socket/Aj

java结构与算法之冒泡排序

一.什么是冒泡排序:冒泡排序是在从相邻两个数之间进行比较,这里将前面一个值定义为before,后面一个值定义为after:当before>after时i,交换他们的值,如果before<after,则不交换. 冒泡排序的时间复杂度,用大O法表示:O(N^2),运算效率低,但是算法思想简单,是比较基础的排序方法 冒泡排序思路图: 冒泡排序参考代码: public class PopSort { int[] array = null; @Test public void testPopSort()

数组常见的操作_冒泡排序

原理:  相邻的两个元素进行比较,如符合条件换位  比较一轮后确定了最大角标的元素,第二轮最后一个角标就不用再比较了 1 public class Array_BubbleSort { 2 public static void main(String[] args) { 3 int[] arr = {43,4,89,5,2,-1}; 4 5 //Arrays.sort(arr);//java中已经定义好的一种排序方式,开发中,对数组排序,要使用该种方法 6 7 8 PrintArray(arr)

排序算法_冒泡排序

a=[77,42,35,12,101,5] for i in range(len(a)-1): for j in range(len(a)-1-i): if a[j]>a[j+1]: a[j],a[j+1]=a[j+1],a[j] print(a) a=[77,42,35,12,101,5] for i in range(len(a)-1): flag=True#已经排序好或者中途排序好的数列,直接退出,提高效率 for j in range(len(a)-1-i): if a[j]>a[j+