自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 01并发编程学习--为什么只有1种实现线程的方法

并发学习-为什么只有一种实现线程的方法

2022-06-19 15:36:45 108 1

原创 八大排序------------基数排序

基数排序 基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用 基数排序法是属于稳定性的排序,基数排序法的是效率高的稳定性排序法 基数排序(Radix Sort)是桶排序的扩展 基本思想 将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,

2021-11-16 16:27:46 475

原创 八大排序----------归并排序

归并排序 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。 基本思想 说明: 可以看到这种结构很像一棵完全二叉树,本文的归并排序我们采用递归去实现(也可采用迭代的方式去实现)。分阶段可以理解为就是递归拆分子序列的过程。 合并相邻有序子序列: 再来看看治阶段,我们需要将两个已经有序的子序列

2021-11-13 22:48:36 108

原创 八大排序---------快速排序

快速排序 基本思想 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列 代码展示 两种方法进行大家参考。 #include <stdio.h> void quickSort(int left,int right,int arr[]) { int l = left; int r = right; int pivot = arr[(left

2021-11-12 14:09:57 558

原创 八大排序---------希尔排序

希尔排序 希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序。 基本思想 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止 代码展示 #include <stdio.h> int main(){ int arr[]={8,9,1,7,2,3,5,4,6,0};

2021-11-11 15:30:29 256

原创 八大排序------插入排序

插入排序 基本思想 把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。 代码展示 #include <stdio.h> int main(){ int arr[8] ={8,3,2,1,7,4,6,5}; int arrSize = sizeof(arr)/sizeof(arr[0]);//数组的长

2021-11-11 13:44:08 232

原创 八大排序---------选择排序

选择排序排序 思路分析 由上图我们可以看出来,在升序的情况下每次都是找到无序数组中最小的值。如图,第一次将最小的值1放在数组中的最前面,依次类推。 代码 include <stdio.h> int main(){ int arr[8] ={8,3,2,1,7,4,6,5}; int i,j,min; int ArrSize = sizeof(arr)/sizeof(arr[0]);//数组的长度 int minIndex;//保存最小值的下标 for (i=0;i<Ar

2021-11-10 22:38:45 238

原创 插入排序

插入排序 插入排序(Insertion Sorting)的基本思想是: 把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素, 无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。 我们用代码进行展示过程 public class InsertSort { public static void main(String[] args) { int[] arr =

2021-05-07 23:24:55 71

原创 八皇后问题解析

八皇后问题 1.问题介绍 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 2.问题分析 1.第一个皇后先放第一行第一列 2.第二个皇后放在第二行第一列、然后判断是否OK, 如果不OK,继续放在第二列、第三列、依次把所有列都放完,找到一个合适 3.继续第三个皇后,还是第一列、第二列……直到第8个皇后也能放在一个不冲突的位置

2021-04-23 23:20:46 344

原创 迷宫问题

递归-迷宫问题 问题描述: 如下图,我们将小球设置为初始的一个位置,让小球运动到箭头的位置 我们需要用到回溯算法,我们代码不用图形化界面编写,直接在控制台展示。 解题思路: 由于我们在控制台展示,我们规定一下,先创建一个8行7列的数组,为 0 表示该点没有走过 当为 1 表示墙 ; 2 表示通路可以走 ; 3 表示该点已经走过,但是走不通。我们将第一行和第八行,第一列和第七列,第3行的第2,3格子设为墙。 public class MiGong { public static void main(St

2021-04-09 23:06:28 85

原创 数据结构:约瑟夫问题

学习问题:关于约瑟夫问题 问题描述:设编号为1,2…n的n个人围坐一圈,约定编号k为(1<=k<=n)的人从1开始报数,数到m的那个人出列,他的下一位又从1开始报数,数到m的那个人又出列,一次类推,直到所有人出列为止,由此产生一个出队编号的序列。 问题思路解析: 代码实现: public class 约瑟夫问题 { public static void main(String[] args) { CircleLinedList c = new CircleL

2021-03-05 17:53:35 578 2

原创 2021-01-09

**二维数组与稀疏数组之间的转换 1. 关于稀疏数组 **当一个数组中大部分元素为0,或者为同一个值得数组时,可以使用稀疏数组来保存该数组。 稀疏数组的处理方法是: 1.记录数组一共有几行几列,有多少个不同的值 2.把具有不同值得元素得行列及值记录在一个小规模得数组中,从而缩小程序的规模 例如 这是正常的二维数组 这是转换后的稀疏数组 2**. 代码演示-java实现二维数组和稀疏数组相互转换** import java.io.FileInputStream; import java.io.FileNot

2021-01-09 20:54:03 115

原创 关于二叉树的代码实现

1.二叉树的建立和生成 #include <stdio.h> #include <stdlib.h> #include <malloc.h> #define MAXNODE 10 typedef struct BiNode{ int data; struct BiNode *lchild,*rchild; }BiTNode,*BiTree; void Visit(int data){ printf("%3d",data); } //建立一个空的二叉数 int In

2020-11-13 23:07:58 551

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除