您的位置:首页 > 编程语言 > Java开发

[javaSE] 数组(排序-选择排序)

2016-05-16 22:27 597 查看
两层嵌套循环,外层循环控制次数,内层循环进行比较

for(int x=0;x<arr.length;x++){
for(int y=0;y<arr.length;y++){
if(arr[x]>arr[y]){

}
}
}


此时的代码有问题,内层的循环多比较了已经排好序的部分,都在最前面,需要去掉

for(int x=0;x<arr.length;x++){
for(int y=x+1;y<arr.length;y++){
if(arr[x]>arr[y]){

}
}
}


此时的代码有问题,外层的循环最后一个的元素没有必要去比较,需要去掉

for(int x=0;x<arr.length-1;x++){
for(int y=x+1;y<arr.length;y++){
if(arr[x]>arr[y]){

}
}
}


判断完后,两个变量交换位置,利用第三方变量

for(int x=0;x<arr.length-1;x++){
for(int y=x+1;y<arr.length;y++){
if(arr[x]>arr[y]){
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}


java版:

public class ArrayDemo {

/**
* @param args
*/
public static void main(String[] args) {
int[] arr=new int[]{2,5,4,1};
int[] newArr=sortArr(arr);
for(int x:newArr){
System.out.print(x);
}
}
/**
* 选择排序(正序)
* @param arr
* @return
*/
public static int[] sortArr(int[] arr){
for(int x=0;x<arr.length-1;x++){
for(int y=x+1;y<arr.length;y++){
if(arr[x]>arr[y]){
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}
return arr;
}
}


PHP版:

<?php
class ArrayDemo{
public static function main(){
$arr=array(2,5,4,1);
print_r(ArrayDemo::sortArr($arr));//输出 Array ( [0] => 1 [1] => 2 [2] => 4 [3] => 5 )
}
/**
* 选择排序(正序)
* @param arr
* @return
*/
public static function sortArr($arr){
for($x=0;$x<count($arr)-1;$x++){
for($y=$x+1;$y<count($arr);$y++){
if($arr[$x]>$arr[$y]){
$temp=$arr[$x];
$arr[$x]=$arr[$y];
$arr[$y]=$temp;
}
}
}
return $arr;
}

}

ArrayDemo::main();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: