思考小算法
Dragon.liu
这个作者很懒,什么都没留下…
展开
-
2021-05-06(希尔排序)
希尔排序它通过比较相距一定间隔的元素来进行,各趟比较所用的距离随着算法的进行而减小,直到只比较相邻元素的最后一趟排序为止。说明class Ceilpx{ public static void main(String[] args) { int [] arr = {2,9,3,1,8,3,8}; int [] sort_arr =Xrpx(arr); for (int c :sort_arr ) { System.out.print(c+" "); } }原创 2021-05-06 16:09:45 · 61 阅读 · 0 评论 -
直接插入排序(Straight Insertion Sort)
直接插入排序将一个记录插入到已经排好序的有序表中,从而得到一个新的有序表。通俗理解,我们首先将序列分成两个区间,有序区间和无序区间,我们每次在无序区间内取一个值,在已排序区间中找到合适的插入位置将其插入,并保证已排序区间一直有序。class Zjcrpx{ public static int [] sortArray(int [] arr){ // for (int i =1;i<arr.length ;i++ ) { int temp = arr[i];//保存起来,否则后面移动位原创 2021-05-05 20:22:13 · 71 阅读 · 0 评论 -
快速选择排序
class Jdxzpx{ public static void main(String[] args) { int [] arr = {7,3,5,3,4,7,2}; int len = arr.length; for (int i = 0;i< len;i++ ) { //look for the min 的索引 int min = i; for(int j =i+1;j<len;j++){ if(arr[min]>arr[j]){原创 2021-05-04 12:45:12 · 66 阅读 · 0 评论 -
二分法查找元素20201210
二分法查找数组是已经按照升序或者降序排列好的下列方法中包括线性查找和二分法public class Erfenfa{ public static void main(String[] args) { long [] arr=new long [10]; for(int i=0;i<arr.length;i++){ arr[i]=i*10; } long start=System.currentTimeMillis(); System.out.println(bina原创 2020-12-10 19:42:29 · 88 阅读 · 1 评论 -
字符串查询
给定字符串,判断该字符串中是否包含某个子串,输出子串的所有出现位置(相当于每个子串在原字符串中的索引=当前子串的索引+上一个子串的索引+子串的长度)索引数:即为当前字符之前的字符的个数第一个“bc”索引:1+0+0=1第二个“bc”索引:4+1+2=7第三个“bc”索引:2+7+2=11public class Zfc{ public static void main(String[] args) { //String str=; //System.out.print(fu(str原创 2020-12-07 18:17:47 · 921 阅读 · 1 评论 -
冒泡(后续补充)
冒泡排序(嵌套)比较的轮数:数组长度-1每轮比较的次数:数组长度-当前轮数-1public class Maopao{ public static void main(String[] args) { int [] arr ={32,8,64,10,5}; for(int i=0;i<arr.length-1;i++){ for(int j=0;j<arr.length-1-i;j++){ if(arr[j]>arr[j+1]){ int temp原创 2020-12-01 13:21:19 · 69 阅读 · 0 评论 -
小白:算法小题目20201127
一、提取列表中的重复值用Python写简单点def nums(num): b=set()//用集合保存提取的数字,避免重复添加 for i in num: if num.count(i)>1: b.update([i]) dict={}//保存重复的值及其下标 for j in b: list=[] for A in range(len(num)): if j==num[原创 2020-11-27 15:45:06 · 89 阅读 · 0 评论