黑马程序员技术交流社区
标题:
请教代码效率问题
[打印本页]
作者:
肖银
时间:
2013-12-29 00:47
标题:
请教代码效率问题
两种相同的代码跑了四次冒泡排序,结果循环的次数完全不同,是否循环次少的那种代码效率高?
class arrbianli {
public static void main(String[] args) {
int[] arr = {100,13,14,3,2,3,5,3,45,6,67,54,6,7,87,4,54,4,34,6,64,1};
//System.out.println(toArr(arr));
//System.out.println("Hello World!");
//reverse(arr);
//System.out.println(toArr(arr));
//System.out.println("=============");
maopao(arr);
System.out.println(toArr(arr));
}
//冒泡排序,前一个数和后一个数对比,如果前一个数比后一个数大,则交换位置
public static void maopao(int[] arr)
{
int n = 0,t = 0,s = 0,f = 0;
//1/for中用b了&&
for (int i = 0; i < arr.length; i++) {
for (int j = i; j > 0 && arr[j - 1] > arr[j]; j--) {
tojiaohuan(arr,j, j - 1);
n++;
}
}
//2for中没有&&,与4相同
for (int i = 0; i < arr.length; i++) {
for (int j = i; j > 0; j--) {
if(arr[j - 1] > arr[j])
tojiaohuan(arr,j, j - 1);
t++;
}
}
//3/for中用b了&&,与1相同
for (int i = 0; i < arr.length; i++) {
for (int j = i; j > 0 && arr[j - 1] > arr[j]; j--) {
tojiaohuan(arr,j, j - 1);
s++;
}
}
//4/for中没有&&,与2相同
for (int i = 0; i < arr.length; i++) {
for (int j = i; j > 0; j--) {
if(arr[j - 1] > arr[j])
tojiaohuan(arr,j, j - 1);
f++;
}
}
System.out.println("1循环了 " + n + "次");//
System.out.println("2循环了 " + t + "次");//
System.out.println("3循环了 " + s + "次");//
System.out.println("4循环了 " + f + "次");//
}
//反转
public static void reverse(int[] arr) {
for (int start = 0,end = arr.length-1;start < end ; start ++ , end --)
{
tojiaohuan(arr,start,end);
}
}
//数组字符串返回
static String toArr(int[] arr) {
String temp = "[";
for (int i = 0;i < arr.length ;i++ )
{
if (i != arr.length - 1)
{
temp = temp + arr[i] + ",";
}
else
{
temp = temp + arr[i] + "]";
}
}
return temp;
}
//交换两个数组空间的值
public static void tojiaohuan (int[] arr ,int i,int j)
{
int temp = arr[i];//定义临时变量,放入参数i的值
arr[i] = arr[j];//把参数j的值赋给i
arr[j] = temp;//把临时变量的值赋给j
}
public static void printa(int i)
{
System.out.println(i);
}
}
复制代码
作者:
高志鹏1
时间:
2013-12-29 15:41
效率 ,是要用 时间复杂度 和 空间复杂度 来度量的吧
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2