选择排序Java程序
时间:2020-01-09 10:35:37 来源:igfitidea点击:
这篇文章展示了如何用Java编写Selection排序程序。
选择排序也是类似于气泡排序的就地排序算法,该算法通过比较和交换每个遍历中的元素来工作。
选择排序算法
选择排序的工作方式如下:
- 从最左侧的元素(索引0)开始,然后将其与右侧的元素进行比较,以查看是否有任何元素小于该元素。如果是,则此新元素将成为该迭代中进行进一步比较的最低元素。
- 在迭代结束时,我们将获得最低元素的索引。
- 用最低的元素交换最低的元素。因此,在第一遍结束时,我们将在最低位置拥有最低的元素。
- 在下一个过程中,从索引1开始,然后再次执行相同的过程。
例如,如果array为{5,4,7,1,8},则从索引0处的元素开始,并将其与相邻元素进行比较。
第一次通过后,我们将获得最低元素的索引,然后将其与索引为0的元素交换。这将结束第一遍。
在第二遍中,从4(索引1的元素)开始,然后再次比较元素。
选择排序Java程序
public class SelectionSort { public static void main(String[] args) { int[] arr = {25, 34, 10, 7, 15, 92, 53, 72, 39, 45}; System.out.println("Original array- " + Arrays.toString(arr)); int[] sortedArray = selectionSort(arr); System.out.println("Sorted array- " + Arrays.toString(sortedArray)); } private static int[] selectionSort(int[] arr){ int index; for(int i = 0; i < arr.length - 1; i++){ index = i; for(int j = i+1; j < arr.length; j++){ //if lower than the current lowest assign this index if(arr[j] < arr[index]){ index = j; } } // swap so that smallest element in this pass // is at its proper place swapElements(i, index, arr); } return arr; } private static void swapElements(int index, int lowest, int[] arr){ int temp = arr[index]; arr[index] = arr[lowest]; arr[lowest] = temp; } }
输出:
Original array- [25, 34, 10, 7, 15, 92, 53, 72, 39, 45] Sorted array- [7, 10, 15, 25, 34, 39, 45, 53, 72, 92]
选择排序空间和时间复杂度
选择排序的时间复杂度为O(N2),与冒泡排序的时间复杂度相同,但选择排序所需的交换次数比冒泡排序的次数少。
不需要额外的空间,因此Selection排序的空间复杂度为O(1)。