选择排序

来源:互联网 发布:mac版搜狗输入法设置 编辑:程序博客网 时间:2024/06/05 04:52

对于一个int数组,请编写一个选择排序算法,对数组元素排序。

给定一个int数组A及数组的大小n,请返回排序后的数组。

测试样例:[1,2,3,5,2,3],6[1,2,2,3,3,5]

我的提交

# -*- coding:utf-8 -*-class SelectionSort:    def selectionSort(self, A, n):        # write code here        for i in range(n -1):            min = i            for j in range(i + 1, n):                if A[min] > A[j]:                    min = j            A[min],A[i] = A[i],A[min]        return A

参考答案

public class SelectSort {    public static void selectSort(int[] arr) {        if (arr == null || arr.length < 2) {            return;        }        int mini = 0;        for (int i = 0; i < arr.length - 1; i++) {            mini = i;            for (int j = i + 1; j < arr.length; j++) {                mini = arr[mini] > arr[j] ? j : mini;            }            swap(arr, i, mini);        }    }    public static void swap(int[] arr, int index1, int index2) {        int tmp = arr[index1];        arr[index1] = arr[index2];        arr[index2] = tmp;    }    public static int[] generateArray(int len, int range) {        if (len < 1) {            return null;        }        int[] arr = new int[len];        for (int i = 0; i < len; i++) {            arr[i] = (int) (Math.random() * range);        }        return arr;    }    public static void printArray(int[] arr) {        if (arr == null || arr.length == 0) {            return;        }        for (int i = 0; i < arr.length; i++) {            System.out.print(arr[i] + " ");        }        System.out.println();    }    public static boolean isSorted(int[] arr) {        if (arr == null || arr.length < 2) {            return true;        }        for (int i = 1; i < arr.length; i++) {            if (arr[i - 1] > arr[i]) {                return false;            }        }        return true;    }    public static void main(String[] args) {        int len = 10;        int range = 10;        int testTimes = 50000;        for (int i = 0; i < testTimes; i++) {            int[] arr = generateArray(len, range);            selectSort(arr);            if (!isSorted(arr)) {                System.out.println("Wrong Case:");                printArray(arr);                break;            }        }        int len2 = 13;        int range2 = 10;        int testTimes2 = 50000;        for (int i = 0; i < testTimes2; i++) {            int[] arr = generateArray(len2, range2);            selectSort(arr);            if (!isSorted(arr)) {                System.out.println("Wrong Case:");                printArray(arr);                break;            }        }    }}
原创粉丝点击