选择排序法,循环,非递归,JAVA版

来源:互联网 发布:博士后出站 知乎 编辑:程序博客网 时间:2024/04/24 11:55
package com.colin;/** *  * @author Colin Yan *  */public class SelectionSort {/** 时间复杂度 */private static int timeComplexity;public static void sort(int arr[]) {for (int i = 0; i < arr.length - 1; i++) {int minTemp = arr[i];int minPos = i;for (int j = minPos + 1; j < arr.length; j++) {timeComplexity++;if (arr[j] < minTemp) {minTemp = arr[j];minPos = j;}}// 三次异或交换数值,两个数字的内存引用不能相同,否则被置0,且无法恢复if (minPos != i) {arr[i] ^= arr[minPos];arr[minPos] ^= arr[i];arr[i] ^= arr[minPos];}}}private static int calcByFormula(int n) {return (n - 1) * (n) / 2;}public static void main(String[] args) {int arr[] = new int[] { 3333, 1, 2, 34, 2, 67, 889, 56 };sort(arr);System.out.println("排序数组长度n为:" + arr.length);System.out.println("公式计算时间复杂度:" + calcByFormula(arr.length));System.out.println("实际计算时间复杂度:" + timeComplexity);for (int i : arr) {System.out.println(i);}}}

原创粉丝点击