论坛首页 编程语言技术论坛

java基础for循环一个细节

浏览 1764 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2015-01-07  
对比getArraySort和getArraySort2方法,观察不同点
public class TestArraySort {

	public static void main(String[] args) {
		int[] a = new int[]{34,8,64,51,32,21};
		int[] a1 = {34,8,64,51,32,21};
		int[] returnA = getArraySort2(a);
		for (int i : returnA) {
			System.out.println(i+" ");
		}
	}
	
	public static int[] getArraySort(int[] a){
		for(int i=1;i<a.length;i++){
			int j;
			int tmp = a[i];
			for(j=i;j>0&&tmp<a[j-1];j--){
				a[j] = a[j-1];
			}
			a[j] = tmp;
		}
		return a;
	}
	
	public static int[] getArraySort2(int[] a){
		for(int i=1;i<a.length;i++){
			int j;
			int tmp = a[i];
			for(j=i;j>0;j--){
				if(tmp<a[j-1]){
					a[j] = a[j-1];
				}
			}
			a[j] = tmp;
		}
		return a;
	}
	 
}

 

   发表时间:2015-01-14  
我没看错的话,判断条件安放的地方不一样,但是从我角度来说都是O(n*n),两个指针。
如果比效率估计差不了多少,这个只是猜测。
0 请登录后投票
   发表时间:2015-01-14  
两个循环的逻辑都不一样。getArraySort里面当tmp<a[j-1]时,里面的循环就终止了,getArraySort2就不会。我不信其他语言比如C里面不是这样的。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics