多种冒泡算法时间和效率比较

<span style="font-family: Arial, Helvetica, sans-serif;">鄙人:</span>
<span style="font-family: Arial, Helvetica, sans-serif;">package testWebApp;</span>
/**
 *
 * @author luozhonghua
 *
 */
public class testmysort {
	static final int N=200;

	public static void main(String[]args){

		long begin=System.currentTimeMillis();
		int []array=new int[N];// {123,115,100,193,194,167,151,183,190,136 } ;

		System.out.println("排序前:");
		for(int i=0;i<N;i++){
			 array[i]=(int)(100+Math.random()*(100+1));
			 System.out.print(array[i]+" ");
		}

		 System.out.print("\n");

	     sort("", array);
	     System.out.println("排序后:");
		 for(int i:array){
			 System.out.print(i+" ");
		 }

		 long end=System.currentTimeMillis();
		 System.out.print("\n");
		 System.out.println("耗时:"+(end-begin));
	}

	static void sort(String desc,int [] array){
		int temp=0;
		int count=0;
	  if(desc.equals("desc")){
		for(int i=0;i<array.length;i++){

			for(int j=i;j<array.length;j++){

				if(array[i]<array[j]){

					 temp = array[i];  //小
					 array[i] = array[j]; //大
					 array[j] = temp;//小
					 count++;
//					 array[i] = array[i] + array[j];
//					 array[j] = array[i] - array[j];
//					 array[i] = array[i] - array[j];
                 }
				}
			}

		 System.out.println("比较次数:"+count);

	  }else{

		  for(int i=0;i<array.length;i++){
				for(int j=i;j<array.length;j++){
					if(array[i]>array[j]){
						temp=array[i];
						array[i]=array[j];
						array[j]=temp;
						count++;
					}
				}
	  }
		  System.out.println("比较次数:"+count);
	  }
	}
}

排序前:
156 101 178 118 193 195 194 109 157 143 167 183 185 122 173 105 132 130 172 191 169 160 149 168 117 200 122 119 110 114 117 118 120 198 145 194 158 197 110 197 169 111 180 186 152 185 152 132 110 149 123 196 168 137 139 166 133 142 160 127 183 188 169 190 184
178 117 102 141 101 135 123 186 102 156 175 162 183 128 139 189 141 183 127 195 164 128 191 110 138 142 183 135 110 180 132 134 196 131 152 144 114 174 114 193 174 144 190 138 184 197 200 141 195 131 147 149 132 100 133 199 134 137 144 154 125 110 166 116
112 158 180 143 152 181 105 199 119 110 170 168 113 165 153 188 125 137 181 183 155 146 147 180 168 154 191 180 184 162 116 151 118 139 102 179 141 115 130 192 163 114 187 116 135 139 173 186 156 161 131 152 134 185 100 189 130 176 122 191 192 127 156 183
170 160 193 167 158 119 139 
比较次数:5508
排序后:
100 100 101 101 102 102 102 105 105 109 110 110 110 110 110 110 110 111 112 113 114 114 114 114 115 116 116 116 117 117 117 118 118 118 119 119 119 120 122 122 122 123 123 125 125 127 127 127 128 128 130 130 130 131 131 131 132 132 132 132 133 133 134 134 134
135 135 135 137 137 137 138 138 139 139 139 139 139 141 141 141 141 142 142 143 143 144 144 144 145 146 147 147 149 149 149 151 152 152 152 152 152 153 154 154 155 156 156 156 156 157 158 158 158 160 160 160 161 162 162 163 164 165 166 166 167 167 168 168
168 168 169 169 169 170 170 172 173 173 174 174 175 176 178 178 179 180 180 180 180 180 181 181 183 183 183 183 183 183 183 184 184 184 185 185 185 186 186 186 187 188 188 189 189 190 190 191 191 191 191 192 192 193 193 193 194 194 195 195 195 196 196 197
197 197 198 199 199 200 200 
耗时:16

某书:

import java.util.Random;

public class P4_1 {
	static final int SIZE=200;

	public static void bubbleSort(int[] a) {
		 int temp;
		 int count=0;
		 for (int i = 1; i < a.length; i++) {
              //将相邻两个数进行比较,较大的数往后冒泡
        	  for (int j = 0; j < a.length - i; j++) {
        		  if (a[j] > a[j + 1]) {
                   //交换相邻两个数
        			  temp=a[j];
        			  a[j]=a[j+1];
        			  a[j+1]=temp;
        			  count++;
        		  }
        	  }
//        	  System.out.print("第"+i+"步排序结果:");			//输出每步排序的结果
//        	  for(int k=0;k<a.length;k++)
//        	  {
//        		  System.out.print(" "+a[k]); // 输出
//        	  }
//        	  System.out.print("\n");
		 }
		 System.out.println("比较次数:"+count);
	 } 

	public static void main(String[] args) {
		long begin=System.currentTimeMillis();

		int[] shuzu=new int[SIZE];//{123,115,100,193,194,167,151,183,190,136 }
		int i;
		System.out.print("排序前的数组为:\n");				//输出排序前的数组
		for(i=0;i<SIZE;i++){
			shuzu[i]=(int)(100+Math.random()*(100+1));			//初始化数组
			System.out.print(shuzu[i]+" ");
		}

		System.out.print("\n");
		bubbleSort(shuzu);					//排序操作
		System.out.print("排序后的数组为:\n");
		for(i=0;i<SIZE;i++){
			System.out.print(shuzu[i]+" ");					//输出排序后的数组
		}
		System.out.print("\n");
		long end=System.currentTimeMillis();
		 System.out.println("耗时:"+(end-begin));
	}

}

排序前的数组为:
193 118 137 130 152 194 109 194 188 156 139 112 137 159 172 199 196 100 166 154 171 104 197 107 197 193 107 163 129 141 186 121 156 139 116 154 158 150 134 199 133 149 102 160 135 142 108 179 159 162 138 200 185 183 183 146 131 163 120 182 136 143 141 148 181
187 109 146 166 141 116 147 184 146 128 130 140 178 120 162 143 156 182 142 157 190 187 118 154 130 154 172 161 169 149 132 130 162 171 162 172 119 192 188 163 136 148 130 151 157 171 178 120 117 153 115 193 163 101 127 130 113 167 179 136 158 120 117 191
123 103 190 199 157 108 173 104 198 136 184 109 102 118 185 137 185 137 158 181 120 127 185 135 141 128 153 132 110 145 195 164 117 197 127 187 190 109 200 140 162 124 134 178 147 164 139 186 100 141 150 144 162 119 115 110 169 193 114 200 116 112 136 103
131 184 178 114 193 126 175 
比较次数:10367
排序后的数组为:
100 100 101 102 102 103 103 104 104 107 107 108 108 109 109 109 109 110 110 112 112 113 114 114 115 115 116 116 116 117 117 117 118 118 118 119 119 120 120 120 120 120 121 123 124 126 127 127 127 128 128 129 130 130 130 130 130 130 131 131 132 132 133 134 134
135 135 136 136 136 136 136 137 137 137 137 138 139 139 139 140 140 141 141 141 141 141 142 142 143 143 144 145 146 146 146 147 147 148 148 149 149 150 150 151 152 153 153 154 154 154 154 156 156 156 157 157 157 158 158 158 159 159 160 161 162 162 162 162
162 162 163 163 163 163 164 164 166 166 167 169 169 171 171 171 172 172 172 173 175 178 178 178 178 179 179 181 181 182 182 183 183 184 184 184 185 185 185 185 186 186 187 187 187 188 188 190 190 190 191 192 193 193 193 193 193 194 194 195 196 197 197 197
198 199 199 199 200 200 200 
耗时:32

时间: 2025-01-29 16:21:52

多种冒泡算法时间和效率比较的相关文章

c-检验快速排序及其改进算法时间效率问题

问题描述 检验快速排序及其改进算法时间效率问题 其中正序逆序的时间效率均正确,乱序的部分就有错误.但是正序逆序及乱序的检验部分基本都是复制粘贴,随机数产生的地方好像也没有什么问题.但运行后只有乱序的改进算法比原算法的时间慢.跪求指导,哪一部分除了问题. 具体代码如下: #include<iostream> #include <ctime> #include <stdlib.h> #define Maxsize 20000 using namespace std; typ

冒泡算法

最近发现冒泡算法还要加个标志位,增加了好多效率啊 思路: 因为每一趟排序都使有序区增加了一个气泡,在经过n-1趟排序之后,有序区中就有n-1个气泡,而无序区中气泡的重量总是大于等于有序区中气泡的重量,所以整个冒泡排序过程至多需要进行n-1趟排序. 若在某一趟排序中未发现气泡位置的交换,则说明待排序的无序区中所有气泡均满足轻者在上,重者在下的原则,因此,冒泡排序过程可在此趟排序后终止.为此,在下面给出的算法中,引入一个布尔量exchange,在每趟排序开始前,先将其置为FALSE.若排序过程中发生

排序算法 时间、空间复杂度

概念 1.时间复杂度     (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道.但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了.并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多.一个算法中的语句执行次数称为语句频度或时间频度, 记为T(n).     (2)时间复杂度 在刚才提到的时间频度中,n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化

冒泡算法的改进具体实现_C 语言

冒泡排序算法的思想: 首先将第一个记录的关键字和第二个关键字进行比较,若为逆序则将两个记录进行交换.然后比较第二个记录和第三个记录的关键字,直至第n-1个记录和第n个记录进行比较为止,一趟过后最大的元素会沉入最底部.然后进行第二趟排序,对前 n-1 个记录进行同样1.2的操作,结果就是关键字次大的记录被安排到n-1位置上.依次进行第 i 趟排序,对前 n-i 个记录进行同样的1.2的操作,直到一趟没有进行过任何比较的操作,排序结束.先看一下基础冒泡算法: 复制代码 代码如下: int Bubbl

冒泡算法的三种&amp;#106avascript表示

算法 以前学习冒泡算法,总是弄不清楚n和n-1等一些变量的关系,原因是没有弄明白它的真正含义,今天写了一个冒泡算法的JS小程序,终于弄明白了.      var R1=new Array();R1[1]=35;R1[2]=55;R1[3]=65;R1[4]=20;R1[5]=30;R1[6]=25;R1[7]=0;R1[8]=7;R1[9]=5;R1[10]=3;var R2=new Array(35,55,65,20,30,25,0,7,5,3);var R3=new Array(35,55,

冒泡算法的三种JavaScript表示

javascript|算法 以前学习冒泡算法,总是弄不清楚n和n-1等一些变量的关系,原因是没有弄明白它的真正含义,今天写了一个冒泡算法的JS小程序,终于弄明白了.      var R1=new Array();R1[1]=35;R1[2]=55;R1[3]=65;R1[4]=20;R1[5]=30;R1[6]=25;R1[7]=0;R1[8]=7;R1[9]=5;R1[10]=3;var R2=new Array(35,55,65,20,30,25,0,7,5,3);var R3=new A

java版本的冒泡算法

算法 /**文件名:MaoPao.java描述: java版本的冒泡算法作者:慈勤强Email:cqq1978@Gmail.com**/ class MaoPao{ public static void test1() //最普通的冒泡算法,需要比较(n-1)*(n-1)次 { int[] iArray={10,5,2,3,321,76,3221,98,86,39}; int k=0; int icount=0; for(int j=0;j<iArray.length-1;j++) { for(

C#冒泡算法!

算法 参加多次笔试,居然有几次都考到了冒泡算法,一次是C#版的填空,一次是javascript版的全部写出.虽然每次都凭着我对冒泡法的理解给弄出来的,但是多多少少与标准模式有点差别,在网上搜了一下关于C#版的冒泡算法,居然也没有一个象样的,自己对照算法模式认真写了一个C#版的,已经测试成功. 同时附上[冒泡排序动画演示] public void BubbleSort(int[] R){        int i,j,temp;    //交换标志    bool exchange;    //最

求二分查找的递归和非递归的时间空间效率比较

问题描述 求二分查找的递归和非递归的时间空间效率比较 求二分查找的递归和非递归的时间空间效率比较,为什么在刘汝佳的书上说,一般用非递归方法 解决方案 递归算法写起来简单,但是有两个不足,一个是调用接口的开销,函数调用本身是有开销的.另一个是堆栈内存比较小,递归调用层次深,容易引起堆栈溢出错误(著名的stack overflow).非递归没有这个问题.还有就是一些编程语言(很久很久以前,在你出生的年代之前),是没有函数调用的,那么就不能递归了. 解决方案二: 递归牵涉到环境保存和环境恢复操作,因此