【算法实作】各种冒泡算法实现
2013-01-04 11:28
274 查看
作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/
有序区和无序区冒泡排序:
作者:gnuhpc
出处:http://www.cnblogs.com/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/
相关文章推荐
- php 实现各种经典算法
- 排序技术_各种算法原理 图解 代码实现
- 数据挖掘各种算法JAVA的实现方法
- 实现循环单链表各种基本运算的算法
- 各种基本算法实现小结(四)—— 图及其遍历
- 各种求圆周率π的算法(蒙特卡洛法的Java实现)
- 实现环形队列各种基本运算的算法(用顺序结构)
- Python----python实现机器学习中的各种距离计算及文本相似度算法
- 各种基本算法实现小结(五)—— 排序算法
- 【数据结构--经典算法】PHP实现各种经典算法
- 各种基本算法实现小结(五)—— 排序算法
- C/C++:各种基本算法实现小结(二)—— 堆 栈
- [C++] 测试硬件popcnt(位1计数)指令与各种软件算法,利用模板实现静态多态优化性能
- 实现单链表各种基本运算的算法
- 各种基本算法实现小结(五)—— 排序算法
- 排序技术_各种算法原理 图解 代码实现
- PHP实现各种经典算法
- 经典算法学习:各种排序算法的模板类实现
- 算法学习----各种排序算法的实现和对比1
- 各种基本算法实现小结(六)—— 查找算法