【算法实作】各种冒泡算法实现

简介: 作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ package org.bupt.test; import java.util.ArrayList; class MyResource { ArrayList arrList= n...

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/

package org.bupt.test;

import java.util.ArrayList;

class MyResource {
    ArrayList<Integer> arrList= new ArrayList<Integer>();
    public MyResource(ArrayList<Integer> arrList) {
        this.arrList = arrList;
    }

    public void insertionSort() {
        boolean conFlag = true;
        for (int i = 0; i < arrList.size(); i++) {
            while (conFlag) {//每趟比较前先判断上次比较是不是没有互换动作发生,若是则说明剩下没有排的已经满足顺序
                conFlag =false;
                for (int j = 0; j < arrList.size()-i-1; j++) {
                    if (arrList.get(j)<arrList.get(j+1)) {
                        int temp = arrList.get(j); 
                        arrList.set(j, arrList.get(j+1));
                        arrList.set(j+1, temp);
                        conFlag = true;
                    }
                }
                for (int j = 0; j < arrList.size(); j++) {  
                    System.out.print(arrList.get(j)+" ");  
                }  
                System.out.println("");  
            }
        }
    }

    public void printOut() {
        for (int i = 0; i < 9; i++) {
            System.out.print(arrList.get(i)+" ");
        }
    }
}

public class Main {
  public static void main(String args[]) throws Exception {
    ArrayList<Integer> arrList = new ArrayList<Integer>(); 
    
    for (int i = 0; i < 9; i++) {
        arrList.add(new Integer((int) (Math.random()*100)));
        System.out.print(arrList.get(i)+" ");
    }
    System.out.println("");
    
    MyResource mtMyResource = new MyResource(arrList);
    
    mtMyResource.insertionSort();
    
    mtMyResource.printOut();
    
  }
}

有序区和无序区冒泡排序:

package org.bupt.test;
import java.util.ArrayList;
class MyResource {
	ArrayList<Integer> arrList= new ArrayList<Integer>();
	public MyResource(ArrayList<Integer> arrList) {
		this.arrList = arrList;
	}
	/*    分为有序区和无序区,起初整个数组均为无序区,flag为有序区的端点,其左边是无序区,右边是有序区
	 *    记录了最后一次发生互换的地方,那么右边就是有序区 */
	public void insertionSort() {
		int index = arrList.size()-1;//起初有序区端点为最后一个,也就是有序区个数为0
		while (index > 0) {
			int flag = index ;//有序区的端点暂时保存在flag中
			index = 0;//人为认定现在有序区为整个数组,也就是说排序完成。
			for (int i = 0; i < flag; i++) {//无序区进行排序
				if (arrList.get(i)<arrList.get(i+1)) {//两两比较,发现有不符合左>右的情况则互换
					int temp = arrList.get(i); 
					arrList.set(i, arrList.get(i+1));
					arrList.set(i+1, temp);
					index = i;//记录发生互换的位置作为有序区的端点
				}
			}
			
			/*说明情况所用的打印代码*/
			for (int j = 0; j < arrList.size(); j++) {
				System.out.print(arrList.get(j)+" ");
			}
			System.out.println("");
		}
	}
	public void printOut() {
	    for (int i = 0; i < 9; i++) {
			System.out.print(arrList.get(i)+" ");
		}
	}
}
public class Main {
  public static void main(String args[]) throws Exception {
    ArrayList<Integer> arrList = new ArrayList<Integer>(); 
    
    for (int i = 0; i < 9; i++) {
		arrList.add(new Integer((int) (Math.random()*100)));
		System.out.print(arrList.get(i)+" ");
	}
    System.out.println("");
    
    MyResource mtMyResource = new MyResource(arrList);
    
    mtMyResource.insertionSort();
    
    mtMyResource.printOut();
    
  }
}

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/


               作者:gnuhpc
               出处:http://www.cnblogs.com/gnuhpc/
               除非另有声明,本网站采用知识共享“署名 2.5 中国大陆”许可协议授权。


分享到:

目录
相关文章
|
7月前
|
算法 搜索推荐 JavaScript
NodeJ实现冒泡算法
NodeJ实现冒泡算法
53 0
|
7月前
|
算法 搜索推荐 Java
Java实现冒泡算法
Java实现冒泡算法
56 0
|
2月前
|
数据可视化 搜索推荐 Python
Leecode 刷题笔记之可视化六大排序算法:冒泡、快速、归并、插入、选择、桶排序
这篇文章是关于LeetCode刷题笔记,主要介绍了六大排序算法(冒泡、快速、归并、插入、选择、桶排序)的Python实现及其可视化过程。
17 0
|
2月前
|
搜索推荐 算法
排序算法---冒泡&选择&插入总结
排序算法---冒泡&选择&插入总结
18 0
|
4月前
|
搜索推荐 算法
十大排序算法-快排-希尔-堆排-归并-冒泡-桶排-选择-插入-计数-基数
十大排序算法-快排-希尔-堆排-归并-冒泡-桶排-选择-插入-计数-基数
十大排序算法-快排-希尔-堆排-归并-冒泡-桶排-选择-插入-计数-基数
|
4月前
|
数据采集 搜索推荐 算法
【高手进阶】Java排序算法:从零到精通——揭秘冒泡、快速、归并排序的原理与实战应用,让你的代码效率飙升!
【8月更文挑战第21天】Java排序算法是编程基础的重要部分,在算法设计与分析及实际开发中不可或缺。本文介绍内部排序算法,包括简单的冒泡排序及其逐步优化至高效的快速排序和稳定的归并排序,并提供了每种算法的Java实现示例。此外,还探讨了排序算法在电子商务、搜索引擎和数据分析等领域的广泛应用,帮助读者更好地理解和应用这些算法。
46 0
|
6月前
|
搜索推荐 算法
【排序】数据结构——排序算法概念及代码详解(插入、冒泡、快速、希尔)
【排序】数据结构——排序算法概念及代码详解(插入、冒泡、快速、希尔)
|
6月前
|
人工智能 算法 搜索推荐
蓝桥杯宝藏排序题目算法(冒泡、选择、插入)
以下是内容的摘要: 本文介绍了三种排序算法:冒泡排序、选择排序和插入排序。冒泡排序通过不断交换相邻的逆序元素逐步排序,最坏情况下需要 O(n^2) 次比较。选择排序在每轮中找到剩余部分的最小元素并放到已排序序列的末尾,同样具有 O(n^2) 时间复杂度。插入排序则是将每个元素插入到已排序序列的正确位置,时间复杂度也是 O(n^2),但空间复杂度为 O(1)。
|
搜索推荐 Java
排序算法-冒泡、选择、堆、插入、归并、快速、希尔
排序算法-冒泡、选择、堆、插入、归并、快速、希尔
33 0
|
7月前
|
存储 算法 搜索推荐
【算法】七大经典排序(插入,选择,冒泡,希尔,堆,快速,归并)(含可视化算法动图,清晰易懂,零基础入门)
【算法】七大经典排序(插入,选择,冒泡,希尔,堆,快速,归并)(含可视化算法动图,清晰易懂,零基础入门)
210 1