祭奠被遗忘的冒泡排序

冒泡算法(从小到大):

1、依次比较相邻的两个元素。若第一的值大于第二的值,则交换它们;

2、每轮将会把大值交换到数组尾;

3、因而每轮比较的次数越来越少;

public class BubbleSort_1 {

    public void BubbleSort_1(int[] score) {
        // 方法一:
        int j, i, temp;
        for (i = score.length - 1; i > 0; i--) {// 从小到大
            for (j = 0; j < i; j++) {
                if (score[j] > score[j + 1]) {// 每轮把最大的交换到后面
                    temp = score[j];
                    score[j] = score[j + 1];
                    score[j + 1] = temp;
                }
            }
            showDate(score); // 打印
        }
    }

    public void BubbleSort_2(int[] score) {
        // 方法二
        int j, i, temp;
        for (i = 0; i < score.length; i++) {// 从小到大
            for (j = i; j < score.length; j++) {
                if (score[i] > score[j]) {
                    /* >时,每轮最小的交换到前面,<时每轮最大的交换到前面 */
                    temp = score[i];
                    score[i] = score[j];
                    score[j] = temp;
                }
            }
            showDate(score);// 打印
        }
    }

    public void BubbleSort_3(int[] score) {
        // 方法三:
        int j, i, temp;
        for (i = 1; i < score.length; i++) {// 从大到小
            temp = score[i];
            for (j = i; j > 0 && score[j] > score[j - 1]; j--) {// 每轮最大的交换到前面
                score[j] = score[j - 1];
            }
            score[j] = temp;
            showDate(score); // 打印
        }
    }

    public void showDate(int[] n) {
        for (int i = 0; i < n.length; i++) {
            System.out.print("score[" + i + "] = " + n[i] + " ");
        }
        System.out.println();
    }

    public static void main(String[] args) {
        BubbleSort_1 s = new BubbleSort_1();
        int score[] = { 88, 99, 44, 77, 33, 22 };
        s.BubbleSort_1(score);
        //s.BubbleSort_2(score);
        //s.BubbleSort_3(score);

    }
}
时间: 2024-09-27 03:56:24

祭奠被遗忘的冒泡排序的相关文章

【Sorting Collection】

排序集锦 各种排序算法,总结一下,一直在遗忘...... [冒泡排序] 就是下面这个鬼啦: c实现代码(升序): #include<stdio.h> void BubbleSort(int *array,int num) { int i,j,temp; for(j=0;j<num;j++) { for(i=1;i<num-j;i++) { if(array[i-1]>array[i]) //倒序就把这里改成<咯 { temp=array[i-1]; array[i-1]

【算法】PHP实现冒泡排序和快速排序--防遗忘

有没有这样的感觉,排序算法虽然简单,但是没看过一次,一会就又忘了,所以有必要 自己使用实际的代码运行实现,才记忆牢固,为此Mark //需求:将数组中元素,从大到小排列$a = array(11, 22, 44, 66, 99, 88); 1. 冒泡排序  /*将第1个数与第2个数,比较如果小于第2个数,就交换位置,依次与这些数比较.   *紧接着是 第2个数做同样的事,直到最后一个数为止   */ //需求:将数组中元素,从大到小排列$a = array(11, 22, 44, 66, 99,

经典排序算法 - 冒泡排序Bubble sort

 原文出自于 http://www.cnblogs.com/kkun/archive/2011/11/23/bubble_sort.html 经典排序算法 - 冒泡排序Bubble sort 原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子 例子为从小到大排序, 原始待排序数组| 6 | 2 | 4 | 1 | 5 | 9 | 第一趟排序(外循环) 第

算法 排序lowB三人组 冒泡排序 选择排序 插入排序

参考博客:基于python的七种经典排序算法   [经典排序算法][集锦]     经典排序算法及python实现 首先明确,算法的实质 是 列表排序.具体就是操作的列表,将无序列表变成有序列表! 一.排序的基本概念和分类 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法. 排序的稳定性: 经过某种排序后,如果两个记录序号同等,且两者在原无序记录中的先后秩序依然保持不变,则称所使用的排序方法是稳定的,反之是不稳定

需求管理之被遗忘的需求

先说一个小笑话.有一个生产队队长,他对专家说:"如今我们生产队的地越来越多,牛越来越忙只是来了.我想要这么一种牛,他吃的草和普通牛一样多,可是干的活是普通牛的十倍. "专家说:"这种牛是能够造出来的,如今有基因project."队长说:"好吧,你给这造几头这种牛."于是专家找到了生物实验室.让生物实验室的人搞一个基因project,把牛造出来. 于是project浩大,投资无法保证,合作多半是不愉快的收场. 现实世界里非常多人分析需求的过程就相似

php实现冒泡排序

一个程序应包括:对数据的描述:在程序中要指定数据的类型和数据的组织形式,即数据结构(data structure).对操作的描述:即操作步骤,也就是算法(algorithm).Nikiklaus Wirth提出的公式:程序=数据结构+算法作为一个程序员必须得懂点算法啊,就从最简单的开始吧=>冒泡排序 维基百科的说法 冒泡排序(英语:Bubble Sort,台湾另外一种译名为:泡沫排序)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列

算法之冒泡排序(Java示例)

冒泡排序(英语:Bubble Sort) 是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端. 动画示意 实现示例 Java 1 public class BubbleSortExample { 2 3 static void bubbleSort(int[] arr){ 4 int len =

python 算法中的--冒泡排序

#列表每两个相邻的数,如果前面的比后面的大,那么就交换这两个数# shuffle() 方法将序列的所有元素随机排序. import random def bubble_sort(li): for i in range(len(li)-1): #i代表趟 for j in range(len(li)-i-1): #j列表 if li[j]>li[j+1]: li[j],li[j+1]=li[j+1],li[j] data=list(range(5)) random.shuffle(data) #打

【2017-02-28】冒泡排序

冒泡排序就是比大小,若前者大于后者,则两者交换位置.用两个For循环嵌套来实现 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 数组 { class Program { static void Main(string[] args) { //冒泡排序 3 5 1 2 4 (12345) //思路:第一个for循环执行第一次的时候把第一个数拿出来和后面的数