数据结构+算法
数据结构+算法
苏小木~
又菜又爱玩
展开
-
算法之快速排序
实现原理选择一个关键值作为基准值,比基准值小的在左边序列(一般无序),大的在右边序列(一般无序)。一般基准值为序列第一个元素左右查找 ,先从右边找出比基准值小的值并获取其索引位置,再从左边找出比基准值大的值 并获取其索引位置,将两个位置的值调换。临界点是左右查询到同一个位置,将基准值与此时位置的值调换。此时比基准值小的值都在左边,比基准值大的值都在右边。以基准值将数组看作左右两个数组,递归进行快排。public static void kuaipai(int[] arr, int left,原创 2022-02-13 17:33:43 · 139 阅读 · 0 评论 -
算法之插入排序
实现原理通过构建有序序列,对于未排序数据,在已知排序序列中从后向前扫描,找到相应位置并插入。类似扑克码牌@Test public void chaPai(){ // 定义数组 int[] ints = {2, 4, 3, 5, 7, 6, 9, 8, 1}; for (int i = 1; i < ints.length; i++) { // 待排元素 int v = ints[i];原创 2022-02-13 01:05:45 · 204 阅读 · 0 评论 -
算法之二分查找
实现原理又叫折半查找,要求待查找的序列有序每次取中间的值与待查关键字进行比较,向左右循环查找。 public void erFen(){ // 定义数组 要求有序 int[] ints = {1, 2, 3, 4, 5, 6, 7, 8}; // 带查找元素 int n =2; int l = 0; //第一个元素位置 int r = ints.length-1; //最后一个元素位置原创 2022-02-13 01:04:39 · 127 阅读 · 0 评论 -
算法之冒泡排序
实现原理比较前后相邻两个数据,如果前面的数据大于后面的数据,就将两个数据交换对数组的第0个数据到n-1个数据进行一次遍历之后。最大的数据就排到数组的n-1位置n=n-1 如果n不为0就继续遍历。反之排序完成。 public void maoPao(){ // 定义数组 int[] ints = {2, 4, 3, 5, 7, 6, 9, 8, 1}; // 数组长度 int n = ints.length; /原创 2022-02-13 01:02:35 · 48 阅读 · 0 评论