写程序思路:
写程序思路:
1.先完成需求功能
2.进行优化处理
3.代码重构
数据结构:
-
数组(最基本的数据结构,是一张线性表)
线性表:数据元素是一对一的,除了首尾元素,其余元素都为首尾相接
-
链表(每个数据都是通过链连接起来的)
单向链表
双线链表
-
树
-
图
查找算法:
-
线性查找: 简单,便于理解,只是适应简单查找
-
二分法
-
int []arr=new int[]{1,2,3,4,5,6,7,8}; System.out.println("请输入一个数:"); Scanner scan=new Scanner(System.in); int num=scan.nextInt(); int left=0; int right=arr.length -1; if(num <arr[left] || num >arr[right]){ System.out.println(num + "不在数组中"); }else{ //找出中间数 //用来保存 找到的数 int res=-1; while(left<=right) { int middle = (left + right) / 2; if (arr[middle] == num){ res=middle; System.out.println(num + "在数组中"+"且该数在数组中的位置是:" +middle); break; }else if(arr[middle] > num){ right=middle-1; }else{ left=middle + 1; } } }
排序算法:
-
1.冒泡排序
需要两层循环嵌套:for
外层循环控制 需要各个数之间进行比较的轮次
内层循环控制 每个数需要比较次数
int[] arr=new int[]{2,5,3,7,9,1,68}; //外层循环比较轮次 //内存循环 for(int i=0;i<arr.length-1;i++){ //已经控制好了比较次数 //比较的次数 =数组长度 -1 for(int j=0;j<arr.length-i-1;j++){ if(arr[j]>arr[j+1]){ int temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } // System.out.println(); } } for(int i=0;i<arr.length;i++){ System.out.print(arr[i] + "、"); }
-
2.快速排序
-
3.插入排序
-
4.选择排序
选择排序
int[] arr=new int[]{1,25,48,12,10,-8,127,56};
//min最小下标
int index=0;
for(int i=0;i<arr.length;i++){//将每个数都比较一次(轮次)
int minIndex=i;
for(int j=i +1;j<arr.length;j++){
if(arr[minIndex]>arr[j]){
minIndex=j;
}
}
//换位
int temp=arr[minIndex];
arr[minIndex]=arr[i];
arr[i]=temp;
System.out.println("第" +(i+1) +"次结果是:" );
for (int i1 : arr) {
System.out.print(i1 +"、");
}
}
-
5.希尔排序
-
6.堆排序
-
7.归并排序
-
8.桶排序
感悟:今天有关排序算法的理解并不是很透彻,虽然冒泡排序与选择排序在逻辑上有些相同,但当落实到代码上的时候选择排序却比冒泡排序难很多,尤其是在内层循环比较的时候,尝试很多次才使其逻辑正确并运行出结果。
当时反复更改逻辑的时候,简直是太崩溃了,但当缕清后心情大为舒畅。
原创文章,作者:wdmbts,如若转载,请注明出处:https://blog.ytso.com/275298.html