插入排序
来源:互联网 发布:怎么一起网络看电影 编辑:程序博客网 时间:2024/06/07 06:10
对于一个int数组,请编写一个插入排序算法,对数组元素排序。
给定一个int数组A及数组的大小n,请返回排序后的数组。
# 测试样例:[1,2,3,5,2,3],6[1,2,2,3,3,5]
我的提交
# -*- coding:utf-8 -*-class InsertionSort: def insertionSort(self, A, n): # write code here k = 0 for i in range(1, n): t = A[i] for j in range(1, i + 1)[::-1]: k = j if t < A[j-1]: A[j] = A[j-1] k = j - 1 else: break A[k] = t return A
参考答案
public class InsertionSort { public static void insertionSort(int[] arr) { if (arr == null || arr.length < 2) { return; } int index = 0; for (int i = 1; i < arr.length; i++) { index = i; while (index > 0) { if (arr[index - 1] > arr[index]) { swap(arr, index - 1, index); index--; } else { break; } } } } 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); insertionSort(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); insertionSort(arr); if (!isSorted(arr)) { System.out.println("Wrong Case:"); printArray(arr); break; } } }}
阅读全文
0 0
- 插入排序-【插入排序】
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- Java SE 1.6对synchronized的优化
- CodeForces
- 二叉树的下一个节点
- c++ 简化版lambda的介绍
- JavaScript学习(一) 数据类型
- 插入排序
- Nginx+Apache实现网页动静分离
- 苹果自动化之重签名
- Solr集群的搭建和使用(2)
- 2.编写第一个Quartz任务
- 【广告算法工程师入门 2】广告检索和转化流程
- 坚持#第188天~开始修炼
- ubuntu-E:Encountered a section with no Package: header的解决办法
- nginx和apache的LVS负载均衡