算法
努力的拾壹
这个作者很懒,什么都没留下…
展开
-
一文读懂插入排序
现给定无序数组如下:先把数组的首元素作为有序区,此时有序区就这一个元素第一轮再让8和有序区的元素依次比较,8>5,所以元素5和8无需交换。此时有序区的元素增加为2个。第二轮再让元素6和有序区的元素比较,6<8,交换位置又6>5,所以元素6和5无需交换位置。此时有序区的元素增加为三个第三轮将元素3和有序区的元素比较,结果为:此时有序区的元素增加为四个依次类推,插入排序一共会进行(数组长度-1)轮,每一轮的结果如下:用代码实现如下:public class原创 2020-07-20 20:48:38 · 100 阅读 · 0 评论 -
选择排序
选择排序作为基础的排序算法,它的时间复杂度是O(n^2)特性:1、在任何时候不管什么有序无序序列,它都要经过两次for循环2、不会相等的值之间的原有的顺序例如:给一组数组[5,8,6,3,9,2,1,7]进行排序,实现效果如下:public class selectionSort { public static void sort(int arr[]){ for(int i = 0;i < arr.length; i ++) { int minInd原创 2020-07-17 22:57:10 · 86 阅读 · 1 评论 -
选择排序
public class Search { public static <E>int search(E[] arr, E target) { for (int i = 0; i < arr.length; i++) if (arr[i].equals(target)) return i; return -1; } public static void main(String[] args)原创 2020-07-17 16:05:56 · 83 阅读 · 0 评论 -
复杂度分析
n表示数据规模Of(n) 表示运行算法所需执行的指令数,和f(n)成正比。复杂度指令数寻找数组中的最大/最小值O(n)所执行指令数:a*n二分查找法Of(logn)所执行指令数:b*logn选择排序算法O(n^2)所需指令数:c*nlogn归并排序算法O(nlogn)所需指令数:d*nlogn注意:表中的a、b、c、d是一个常数时间复杂度分...原创 2020-02-13 16:10:42 · 79 阅读 · 0 评论 -
Java冒泡排序
原理:若要求从小到大排序,则依次比较相邻两个元素,直至将每次比较的最大的元素交换到右边。举例:从小到大排列数组 int arr[] = {34,21,52,23,33}思路:依次比较相邻的两个数,小数在前,大数在后。直至比较出最后两个数为止。第一趟排序: 第一次:34和21比较,3...原创 2020-02-03 20:07:24 · 109 阅读 · 0 评论 -
选择排序
选择排序的思想:每一趟在后面n-i+1个钟选出关键码最小的对象,作为有序序列的第i个记录简单的选择排序:题目:用选择排序从小到大排列以下数字:8,6,2,3,1,5,7,4解题:首先,在这个数组找出最小的数字排第一名,这个数字是1,则将数字8和1交换;再在剩下的数字(8,6,2,3,5,7,4)找次小的元素,这个元素是2,则将6和2交换;以此类推……我们可以得到排序后的结果是{1,2,3,...原创 2020-02-01 13:57:08 · 106 阅读 · 0 评论