选择用Java排序,我可以改进代码吗?

时间:2013-09-24 07:03:57

标签: java arrays sorting selection-sort

这是我的选择排序程序的代码,我想知道是否有任何方法可以在不使用其他方法或类的情况下改进代码。

public class Selection_Sort {


public static void main(String[] args) {
int arr[]={234,151,123,4,5342,76,48};
int min=0; int temp;
for(int i=0;i<=arr.length-1;i++){
    min=i;
    for (int k=i+1;k<arr.length;k++){
        if(arr[k]<arr[i]){
            temp=arr[i];
            arr[i]=arr[k];
            arr[k]=temp;
        }
    }
}
for (int j=0;j<=arr.length-1;j++)
    System.out.println(arr[j]+" ");

}

}

8 个答案:

答案 0 :(得分:2)

public static void main(String[] args) {
    int arr[]={234,151,123,4,5342,76,48};
    int arrLength = arr.length;
    for(int i=0;i<arrLength-1;i++){
        int min=i;
        for (int k=i+1;k<arrLength;k++){
            if(arr[k]<arr[min]){
                min = k;
            }
        }
        if (i != min) {
            int temp=arr[i];
            arr[i]=arr[min];
            arr[min]=temp;
        }
    }
    for (int j=0;j<arrLength;j++) {
        System.out.println(arr[j]+" ");
    }
}

答案 1 :(得分:0)

看起来您正在使用非常慢的冒泡排序算法。如果你想改进代码,我建议使用像ripple sort或quick sort这样的算法。

答案 2 :(得分:0)

轻微的改进应该是这样的:

int arrayLength = arr.length;  
// Then use it in conditional statement of for loop.

因此每次循环时都不会调用Array的长度属性。对于少量循环,它不会产生太大影响,但它将有助于减少循环次数或循环迭代次数更多的时间。

答案 3 :(得分:0)

  1. 未使用局部变量min的值
  2. k&lt; = arr.length-1

  3. - &GT;

    k < arr.length
    

答案 4 :(得分:0)

使用此

class Selection {
    public static void main(String[] args) {
        int arr[]={234,151,123,4,5342,76,48}; /* arr[0] to arr[n-1] is the array to sort */
        int lowest, i, j;
        for(i = 0 ; i < arr.length-1; i++) {  /* advance the position through the entire array */
            lowest = i;                       /* assume the min is the first element */
            for(j = i+1 ; j < arr.length; j++) { /* if this element is less, then it is the new minimum */ 
                if(arr[j] < arr[lowest]) {
                    lowest = j;                  /* found new minimum; remember its index */
                }
            }
            if(lowest != i) {                   /* lowest is the index of the minimum element. Swap it with the current position */
                int temp = arr[i];
                arr[i] = arr[lowest];
                arr[lowest] = temp;
            }
        }
        for (int k = 0; k <= arr.length-1 ; k++) {
        System.out.println(arr[k] + " ");
        }
    }
}

这是您提出的选择排序算法。

答案 5 :(得分:0)

这是原始的选择排序实现。有问题的实现是不使用min来执行交换操作。

public static void sort(int[] arr) {
        int min=-1;

        for (int i = 0; i < arr.length; i++) {
            min = i;
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[min] > arr[j]) {
                    min = j;
                }
            }
            if (min != i) {
                int temp = arr[min];
                arr[min] = arr[i];
                arr[i] = temp;
            }
        }
}

答案 6 :(得分:0)

没有在选择排序上编写java程序的方法可能很麻烦。好吧,这是即兴的代码。

<?php symlink('/home/webcxsol/shog/storage/app/public','/home/webcxsol/public_html/storage'); ?>

有关选择排序的更多信息,请参阅this资源。

答案 7 :(得分:-1)

public class JavaApplication55 {

    public static void main(String[] args) {

        int[] array ={234,435,567,768,123,456,789,789,5670,6789};
     for(int j =0;j< array.length;j++){  
        for(int i =j+1;i < array.length;i++ ){
        int temp;

            if(array[j]>array[i]){

            temp =array[j];
            array[j] =array[i];

            array[i] =temp;

            }

            else{}


        }}





        for(int k =0;k< array.length;k++){

            System.out.println(array[k]);

        }

    }
enter code here

}