冒泡排序BubbleSort

/**
 *
 * @author Administrator
 * 功能:交换式排序之冒泡排序
 */
package com.test1;

import java.util.Calendar;

public class BubbleSort {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        int[] arr = new int[50000];
        for (int i = 0; i < arr.length; i++) {
            //让程序随机产生一个1 - 10000个数
            //Math.random会产生一个0到1的数
            arr[i] = (int)(Math.random()*50000);
        }
        //int[] arr = { 1, 6, 0, -1, 9, -100, -90 };
        // 排序开始
        // 外层循环,它可以决定一共走几趟

        Bubble bubble = new Bubble();
        //在排序前打印系统时间
        //Calendar是单开模式,在系统里面只有一个,且只需要一个实例,不是new 出来的
        //Java共有23中模式
        Calendar cal = Calendar.getInstance();
        System.out.println("排序前:"+cal.getTime());
        bubble.sort(arr);
        //在排序后打印系统时间
        //因为是单开的,所有首先重新得到实例
        cal = Calendar.getInstance();
        System.out.println("排序后:"+cal.getTime());
//        System.out.println("冒泡结束后结果是:");
//        for (int i = 0; i < arr.length; i++) {
//            System.out.print(arr[i] + " ");
//        }

    }

}

class Bubble {

    // 排序方法
    public void sort(int[] arr) {
        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]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }

        // //简单数据类型会开辟另一个栈,复合类型会改变
        // public void swap(int a, int b)
        // {
        // if(a > b)
        // {
        // int temp = a;
        // a = b;
        // b = temp;
        // }
        // }
    }
}
时间: 2024-10-01 05:58:01

冒泡排序BubbleSort的相关文章

排序算法SIX:冒泡排序BubbleSort

1 /** 2 *冒泡排序: 3 * 两个两个比较,一轮过后最大的排在了最后面 4 * n个数变为n-1个没排好的数 5 * 再进行一轮 6 * 第二大的排在了倒数第二个 7 * 以此类推 8 * 直到排到第一个为止 9 * 10 * 弄两个循环,相邻两个数比较 11 */ 12 public class BubbleSort 13 { 14 /** 15 *冒泡排序主方法 16 * 17 */ 18 public static void bubbleSort(int[] resouceArr)

冒泡排序算法

冒泡排序(Bubble Sort)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端. 本文地址:http://www.cnblogs.com/archimedes/p/bubble-sort-algorithm.html,转载请注明源地址. 冒泡排序对n个项目需要O(n2)的比较次数,且可以原地排序.尽

数据结构——排序——冒泡排序算法

冒泡排序(Bubble Sort)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端. 冒泡排序对n个项目需要O(n2)的比较次数,且可以原地排序.尽管这个算法是最简单了解和实作的排序算法之一,但它对于少数元素之外的数列排序是很没有效率的. 冒泡排序是与插入排序拥有相等的执行时间,但是两种法在需要的交换次

深入浅出排序算法之-冒泡排序

#include <iostream> void Swap(int &a,int &b){ int temp; temp = a; a = b; b = temp; } /* 冒泡排序 基本思想:第一趟冒泡得到一个关键字最小的记录,第二趟得到次小值...针对每一趟:两两相邻纪录的关键字,如果反序则交换直到没有反序为止 特点:时间效率,总共n-1趟冒泡,对j个记录的表进行一趟冒泡需要j-1次关键字比较,空间效率:仅用一个辅助单元(临时变量) */ void BubbleSort(

数据结构基础(1) --Swap &amp; Bubble-Sort &amp; Select-Sort

Swap的简单实现 //C语言方式(by-pointer): template <typename Type> bool swapByPointer(Type *pointer1, Type *pointer2) { //确保两个指针不会指向同一个对象 if (pointer1 == NULL || pointer2 == NULL) { return false; } if (pointer1 != pointer2) { Type tmp = *pointer1; *pointer1 =

数据结构基础 排序算法(一) 概念篇

本辑将会对笔试面试最常涉及到的12种排序算法(包括插入排序.二分插入排序.希尔排序.选择排序.冒泡排序.鸡尾酒排序.快速排序.堆排序.归并排序.桶排序.计数排序和基数排序)进行详解.每一种算法都有基本介绍.算法原理分析.图解演示.算法代码.笔试面试重点分析.笔试面试题等板块. 一.插入排序 1)算法简介 插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入.插入排序在实现上,通常

排 序 算 法

一.插入排序(Insertion Sort)1. 基本思想:  每次将一个待排序的数据元素,插入到前面已经排好序的数列中的适当位置,使数列依然有序:直到待排序数据元素全部插入完为止.2. 排序过程: [示例]:[初始关键字] [49] 38 65 97 76 13 27 49    J=2(38) [38 49] 65 97 76 13 27 49    J=3(65) [38 49 65] 97 76 13 27 49    J=4(97) [38 49 65 97] 76 13 27 49 

排序算法 基于Javascript

写在前面 个人感觉:javascript对类似排序查找这样的功能已经有了很好的封装,以致于当我们想对数组排序的时候只需要调用arr.sort()方法,而查找数组元素也只需要调用indexOf()方法或lastIndexOf()方法,我们忽略了其内部的实现.而今,js能开发的项目越来越庞大,对性能和效率要求也越来越高,虽然众多的库和框架也可以帮我们应付这些问题,但小编觉得框架过眼云烟,把握程序开发的基础,才能在飞速的更新换代中应对自如.因此我们不妨也研究一下这些算法,其中的思路有助于我们自身的提高

java面试题003

各种排序算法:冒择路(入)兮(稀)快归堆,桶式排序,基数排序 冒泡排序,选择排序,插入排序,稀尔排序,快速排序,归并排序,堆排序,桶式排序,基数排序 一.冒泡排序(BubbleSort) 1. 基本思想: 两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据元素为止. 2. 排序过程: 设想被排序的数组R[1..N]垂直竖立,将每个数据元素看作有重量的气泡,根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R,凡扫描到违反本原则的轻气泡,就使其向上”漂浮”,如