两层嵌套循环,外层控制循环次数,内层循环进行比较
for@H_301_5@(int@H_301_5@ x=0;x<arr.length-1;x++){ @H_301_5@int@H_301_5@ y=0;y<arr.length;y++){ @H_301_5@if@H_301_5@(arr[y]>arr[y+1]){ } } }@H_301_5@
此时的代码有问题,内层循环多比较了已经排好序的部分,都在最后面,需要去掉
int@H_301_5@ y=0;y<arr.length-x;y++]){ } } }@H_301_5@
此时的代码有问题,内层循环最后一个元素,无法和它后面的比较,应该去掉
int@H_301_5@ y=0;y<arr.length-x-1;y++]){ } } }@H_301_5@
判断完后,两个变量交换位置,利用第三方变量
]){ @H_301_5@int@H_301_5@ temp=arr[y]; arr[y]@H_301_5@=arr[y+1]; arr[y@H_301_5@+1]=temp; } } }@H_301_5@
java版:
public@H_301_5@ class@H_301_5@ ArrayDemo { @H_301_5@/**@H_301_5@ * @H_301_5@@param@H_301_5@ args @H_301_5@*/@H_301_5@ static@H_301_5@ voID@H_301_5@ main(String[] args) { @H_301_5@int@H_301_5@[] arr=new@H_301_5@ int@H_301_5@[]{2,5,4,1}; @H_301_5@int@H_301_5@[] newArr=bubbleSort(arr); @H_301_5@int@H_301_5@ x:newArr){ System.out.print(x); } } @H_301_5@ * 冒泡排序(正序) * @H_301_5@ arr * @H_301_5@@return@H_301_5@ int@H_301_5@[] bubbleSort([] arr){ @H_301_5@temp; } } } @H_301_5@return@H_301_5@ arr; }}@H_301_5@
PHP版:
<?PHP@H_301_5@ ArrayDemo{ @H_301_5@function@H_301_5@ main(){ @H_301_5@$arr@H_301_5@=array@H_301_5@(2,1)">); @H_301_5@print_r@H_301_5@(ArrayDemo::bubbleSort($arr@H_301_5@));//@H_301_5@输出 Array ( [0] => 1 [1] => 2 [2] => 4 [3] => 5 )@H_301_5@ } @H_301_5@/*@H_301_5@* * 冒泡排序(正序) * @param arr * @return @H_301_5@function@H_301_5@ bubbleSort($arr@H_301_5@){ @H_301_5@for@H_301_5@($x@H_301_5@=0;$x@H_301_5@<count@H_301_5@($arr@H_301_5@)-1;$x@H_301_5@++$y@H_301_5@=0;$y@H_301_5@<$arr@H_301_5@)-$x@H_301_5@-1;$y@H_301_5@++if@H_301_5@($arr@H_301_5@[$y@H_301_5@]>$y@H_301_5@+1]){ @H_301_5@$temp@H_301_5@=$y@H_301_5@]; @H_301_5@$y@H_301_5@]=$y@H_301_5@+1]=$temp@H_301_5@; } } } @H_301_5@return@H_301_5@ ; }}ArrayDemo@H_301_5@::main();
选择排序和冒泡排序性能都很低,提高性能的方法,当需要换位置的时候,先不换,先把需要换位置的角标放到栈内存中,等最后一次性在堆内存中交换
排序中最快的是 希尔排序
总结以上是内存溢出为你收集整理的[javaSE] 数组(排序-冒泡排序)全部内容,希望文章能够帮你解决[javaSE] 数组(排序-冒泡排序)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)