黑马程序员技术交流社区
标题:
选择排序输出总是不正确 求大神指点。
[打印本页]
作者:
xhCx
时间:
2015-5-23 23:12
标题:
选择排序输出总是不正确 求大神指点。
public class Array {
private Array(){
}
/**
* 取int数组最大值
* @param arr传入一个int数组
* @return返回一个int数值
*/
public static int max(int arr[]){
int max=arr[0];
for(int i=0;i<arr.length;i++){
if(arr[i]>max){
max=arr[i];
}
}
return max;
}
/**
* 取int数组里面最小值
* @param arr传入一个int数组
* @return 返回一个int数值
*/
public static int min(int arr[]){
int min=arr[0];
for(int i=0;i<arr.length;i++){
if(arr[i]<min){
min=arr[i];
}
}
return min;
}
/**
* 对传入的int数组里面进行冒泡排序
* @param arr 传入一个int数组
*/
public static int[] maoSort(int[] arr){
for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
replace(arr,i,j);
}
}
return arr;
}
/**
* 对传入的int数组里面进行选择排序
* @param arr 传入一个int数组
*/
public static int[] xuanzeSort(int[] arr){
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-1;j++){
replace(arr,j,j);
}
}
return arr;
}
public static void replace(int[] arr,int a,int b){
if(arr[a]>arr[b]){
int t=arr[a];
arr[a]=arr[b];
arr[b]=t;
}
}
}
public class A1_1 {
public static void main(String[] args){
int[] arr={23,34,45,12,333,25};
System.out.println("最大值是:"+Array.max(arr));
System.out.println("最小值是:"+Array.min(arr));
int[] intAr = Array.xuanzeSort(arr);
System.out.println("选择排序:"+Arrays.toString(intAr));
int[] intAr1=Array.maoSort(arr);
System.out.println("冒泡排序:"+Arrays.toString(intAr1));
}
}
作者:
Amu
时间:
2015-5-23 23:33
你的核心代码有问题 冒泡排序和选择排序都搞反了
不要把两数组元素比较的代码放入另一个方法中,比较后在用swap()交换位置即可
冒泡排序核心代码,它们是相邻元素互相比较,小的上浮,大的下沉,所谓冒泡,最大值出现在末角标位置
for (int i=0;i<arr.length-1 ;i++ )
{
for (int j=0;j<arr.length-1-i ;j++ )
{
if (arr[j]>arr[j+1])
{
swap(arr,j,j+1);
}
}
}
复制代码
选择排序是数组中的每个元素分别与其他元素进行比较
for (int i=0;i<arr.length-1 ;i++ )
{
for (int j=i+1;j<arr.length ;j++ )
{
if (arr[i]>arr[j<span style="line-height: 30.7999992370605px;">]</span><span style="line-height: 2.2em;">)</span>
复制代码
作者:
xhCx
时间:
2015-5-23 23:41
Amu 发表于 2015-5-23 23:33
你的核心代码有问题 冒泡排序和选择排序都搞反了
不要把两数组元素比较的代码放入另一个方法中,比较后在用 ...
好的 谢谢啦!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2