选择排序
来源:互联网 发布: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; } } }}
阅读全文
0 0
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序:
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 安卓四大组件(二)
- 网络中进程间的通信----Socket
- php之socket入门教程
- 让C#轻松实现读写锁分离--封装ReaderWriterLockSlim
- [Tyvj1655] 游乐园 二分查找
- 选择排序
- vim 在每一行前加#
- 队列
- 工厂模式模拟Spring的bean加载过程
- win7/anaconda3 4.2.0下安装tensorflow踩过的坑:import报错问题
- 动态代理
- java.util.Properties类
- [Linux]--守护进程
- Struts2和request上使用commons-fileupload的区别