文章列表
冒泡排序:
int[ ] nums = {3 6 2 10 8};
冒泡排序实现思路
1.两两进行比较,把大的放到后面的位置
第一轮比较3和6当 3>6 把 3 往后移一位:3 6 2 10 8
第二轮比较:3 6 2 10 8 --> 3 2 6 10 8
第三轮比较:3 2 6 10 8 --> 3 2 6 10 8
第四轮比较:3 2 6 10 8–> 3 2 6 8 10
第二趟:
第一次:3 2 6 8 10 --> 2 3 6 8 10
第二次: 2 3 6 8 10–> 2 3 6 8 10
第三次:2 3 6 8 10–>2 3 6 8 10
第三趟:2 3 6 8 10
…
第四趟:
…
循环外层控制比较的轮数
内层循环控制每轮比较的次数
Int tmp = 0;
for(int i = 0; i < nums.length - 1;i++){
for(int j = 0; j< nums.length - 1 - i;j++){
if(nums[j] > nums[j+1]){
tmp = nums[j];
nums[j] = nums[j +1];
nums[j+1] = tmp;
}
}
}
;
选择排序
选择排序实现思路:
选择出最小的然后再进行排序
Int[] nums = {10,9,8,7,1,6,5,4,3,2}
假设第一个是最小的,然后让第一个和后面每一个数组元素进行比较,找到最小的元素的索引,把第一个和最小的进行交互位置。
10,9,8,7,1,6,5,4,3,2
假设10是最小的:
Int min_index = 0;
第一轮比较:
第一次:10,9,8,7,1,6,5,4,3,2 10和9进行比较,10>9,那么min_index = 1;
第二次:10,9,8,7,1,6,5,4,3,2 9>8 那么 min_index = 2
第三次:10,9,8,7,1,6,5,4,3,2 8>7 那么 min_index = 3
第四次:10,9,8,7,1,6,5,4,3,2 7>1 那么 min_index = 4
第五次:10,9,8,7,1,6,5,4,3,2 1<6 那么 min_index = 4
第六次:10,9,8,7,1,6,5,4,3,2 1<5 那么 min_index = 4
第七次:10,9,8,7,1,6,5,4,3,2 1<4 那么 min_index = 4
第八次:10,9,8,7,1,6,5,4,3,2 1<3 那么 min_index = 4
第九次:10,9,8,7,1,6,5,4,3,2 1<2 那么 min_index = 4
Int tmp = 0;
If(min_index != 0){
Tmp = nums[0];
Nums[0] = nums[min_index];
Nums[min_index] = tmp;
}
1,9,8,7,10,6,5,4,3,2
第二轮比较:
1,2,8,7,10,6,5,4,3,9
第三轮比较:
1,2,3,7,10,6,5,4,8,9
第四轮比较:
1,2,3,4,10,6,5,7,8,9
第五轮比较:
1,2,3,4,5,6,10,7,8,9
第六轮比较:
1,2,3,4,5,6,10,7,8,9 min_index = 7
第七轮比较:
1,2,3,4,5,6,7,10,8,9
第八轮比较:
1,2,3,4,5,6,7,8,10,9
第九轮比较:
1,2,3,4,5,6,7,8,9,10
插入排序
调试:
Debug运行方式:
1. 在需要的代码行出打上断点(在指定行,右键,toggle breakpoint)
2. 通过debug模式运行(右键 debug as -> java application)
3. F5进入方法 F6下一行 F8执行完成debug
4. Debug可以查看变量的值的变化
二分查找
Int[] nums = {12,25,30,8,6};
使用二分法查询指定元素
查找元素为25
1. 对数组进行排序 12,25,30,8,6
2. 排序之后的数组元素 6,8,12,25,30
3. 先跟中间值12进行比较 25 >12
4. 确定查找范围:25 30
如果查找的元素为8
1. 排序
2. 和中间元素进行比较确定下一步的查询范围 8 < 12
3. 查询数组的前半部分6,8
4. 再对前半部分进行一分为二进行查找
猜数字游戏:
1~100 猜29
Int no.
Int middle = len /2
If(no. < Nums[midlle]){
//循环前半部分查找
}else{
//从后半半部分找
}