Java的选择排序

1 说明

我们可以创建一个Java程序来使用选择排序对数组元素进行排序。在选择排序算法中,我们搜索最低的元素并将其排列到正确的位置。我们将当前元素与下一个最低编号交换。

2 选择排序算法

选择排序算法以非常简单的方式工作。它为给定的数组维护两个子数组。

  • 子数组已经排序。
  • 第二个子数组是未排序的。

在每次选择排序迭代时,都会从未排序的子数组中选取一个元素,然后将其移至已排序的子数组。

arr[] = 25 35 45 12 65 10  
  
// Find the minimum element in arr[0...5] and place it at beginning.  
  
10 25 35 45 12 65   
  
// Find the minimum element in arr[1...5] and place it at beginning of arr[1...5]  
  
10 12 25 35 45 65   
  
// Find the minimum element in arr[2...5] and place it at beginning of arr[2...5]  
No, you can see that the array is already sorted.   
  
10 12 25 35 45 65   

3 时间复杂度

Best: ?(n^2)
Average: ?(n^2)
Worst: O(n^2)

4 空间复杂度

O(1)

5 程序实现

/**
 * 一点教程网: http://www.yiidian.com
 */
public class SelectionSortExample {  
    public static void selectionSort(int[] arr){  
        for (int i = 0; i < arr.length - 1; i++)  
        {  
            int index = i;  
            for (int j = i + 1; j < arr.length; j++){  
                if (arr[j] < arr[index]){  
                    index = j;//searching for lowest index  
                }  
            }  
            int smallerNumber = arr[index];   
            arr[index] = arr[i];  
            arr[i] = smallerNumber;  
        }  
    }  
       
    public static void main(String a[]){  
        int[] arr1 = {9,14,3,2,43,11,58,22};  
        System.out.println("Before Selection Sort");  
        for(int i:arr1){  
            System.out.print(i+" ");  
        }  
        System.out.println();  
          
        selectionSort(arr1);//sorting array using selection sort  
         
        System.out.println("After Selection Sort");  
        for(int i:arr1){  
            System.out.print(i+" ");  
        }  
    }  
}  

以上代码输出结果为:

Before Selection Sort
9 14 3 2 43 11 58 22 
After Selection Sort
2 3 9 11 14 22 43 58 

 

热门文章

优秀文章