[javaSE] 数组(排序-选择排序)
两层嵌套循环,外层循环控制次数,内层循环进行比较
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();
十年开发经验程序员,离职全心创业中,历时三年开发出的产品《唯一客服系统》
一款基于Golang+Vue开发的在线客服系统,软件著作权编号:2021SR1462600。一套可私有化部署的网站在线客服系统,编译后的二进制文件可直接使用无需搭开发环境,下载zip解压即可,仅依赖MySQL数据库,是一个开箱即用的全渠道在线客服系统,致力于帮助广大开发者/公司快速部署整合私有化客服功能。
开源地址:唯一客服(开源学习版)
官网地址:唯一客服官网