20162311 编写Android程序测试查找排序算法 一.设置图形界面 因为是测试查找和排序算法,所以先要有一个目标数组.为了得到一个目标数组,我设置一个EditText和一个Button来添加数据 <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="2" android…
排序算法 算法复杂度 算法简述 插入排序 N2 前方有序,依次将后方无序数据插入前方合适位置. 冒泡排序 N2 前方有序,从后方两两比较,将最小泡冒到前方. 选择排序 N2 前方有序,从后方选择最小的加入前方. 快速排序 N(logN) 选择pivot,前方小于等于pivot,后方大于等于pivot 堆排序 N(logN) 建堆,将堆顶移出,堆尾补位,并重新调整堆. 归并排序 N(logN) 选择分裂点,前方归并,后方归并,合并前方和后方 基数排序 D(N + radix) D个关键码,每个关键…
1. 利用循环打印如下图形 ***** **** *** ** * public class Main { public static void main(String[] args) { // TODO Auto-generated method stub int i = 5; while (i >= 0) { for (int j = i; j > 0; j--) System.out.print("*"); System.out.println(); i--; } }…
对这几个基础排序算法进行梳理,便于以后查看. /** * * 冒泡排序 * 从末尾开始相邻两数相互比较大小,满足条件就交换位置.循环每进行一次,即可确定第i位数的值. *冒泡排序的时间复杂度为O(n^2). * */ function bubbleSort(arr){ if(arr == null || arr.length == 0) return; for(var i =0 ; i < arr.length-1 ;i++){ //比较n-1次即可 for(var j = arr.length…
本文用Python实现了插入排序.希尔排序.冒泡排序.快速排序.直接选择排序.堆排序.归并排序.基数排序. 1.插入排序 描述 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的.个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2).是稳定的排序方法.插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素).在第一部分排序完成后,再将这个最…
前言:闲来无事,便研究起来对数组的排序算法,怕过后遗忘,特地总结一下,也希望能帮到大家 概要:  总结的算法: 冒泡排序.插入排序.选择排序 要排序的一列数(从小到大): 1, 5, 3, 83, 46, 55, 16, 87, 28, 66, 8, 33, 47 一.冒泡排序 1.源代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threa…
//希尔排序 static int[] ShellSort(int[] array) { if (array != null) { int[] list = { 9, 5, 3, 2, 1 }; foreach (int k in list) { for (int i = k; i < array.Length; i++) { int current = array[i]; int preIndex = i - k; while (preIndex >= 0 && preInd…
零.写在最前 排序的方法有很多种,这篇文章只是记录我熟悉的算法: 我发现了一个关于排序算法很有趣的网站,把相关的算法演示做成了动画,有兴趣的同学可以看看! 附上SortAnimate网站链接:http://jun-lu.github.io/SortAnimate/index.html 一.冒泡排序 这是一种最基础的排序算法,也就是入门级别的算法! 原理:两两检测,比较两者之间的大小关系,大的往后丢! function bubbleSort(arr){ for(var i=0;i<arr.leng…
1.计数排序 如果给定上下界,并且区间不大的话,最适用. 比如对于英文字母数组进行排序. 时间复杂度O(n),空间复杂度O(n) void countSort(int A[], int n, int low, int high) { ; vector<); //count[i] represents low+i appears count[i] times in A ; i < n; i ++) { count[A[i]-low] ++; } ; ; i < size; i ++) {…
插入排序是最基础的排序算法,原理: 首先1个元素肯定是有序的,所以插入排序从第二个元素开始遍历:内循环首先请求一个空间保存待插入元素,从当前元素向数组起始位置反向遍历:当发现有大于待插入元素的元素,则将此元素向后挪一位,最终将缓冲区的元素放入空白位置. void insert_sort(int a[],int n) { int i,j,temp; ; i<n; i++) { temp=a[i]; ; j--) { ]) { a[j]=a[j-]; }else{ break; } } a[j]=t…