冒泡 选择 插入排序 二分查找 代码备忘
2016-08-28 09:08
309 查看
//冒泡排序算法 public class Test18{ public static void main(String[] args){ int[] num = {23,2,18,90,7,56}; int temp = 0; //用于作数据交换的临时变量 //外循环控制比较的轮数 for(int i=0;i<num.length-1;i++){ for(int j=0;j<num.length-1-i;j++){ //比较相临的两个数,如果前一个数大于后一个数,那么交换位置 //两个数交换位置通过第三个变量 if(num[j]>num[j+1]){ temp = num[j]; num[j] = num[j+1]; num[j+1] = temp; } } } //输出结果 for(int i=0;i<num.length;i++){ System.out.print(num[i]+" "); } } } //23 2 18 90 7 56 //2 18 23 7 56 90 第一轮比较5次 //2 18 7 23 56 90 第二轮比较4次 //2 7 18 23 56 90 第三轮比较3次 //2 7 18 23 56 90 第四轮比较2次 // 2 7 18 23 56 90 第五轮比较1次
<
4000
/p>
//选择排序算法 public class Test19{ public static void main(String[] args){ int[] num = {2,5,2,3,23,100}; int minIndex = 0; //最小数的下标 int temp = 0; //交换临时变量 //比较的轮数 for(int i=0;i<num.length-1;i++){ minIndex = i; //每轮重新定义最小数的下标 //每轮比较的次数 for(int j=i+1;j<num.length;j++){ if(num[minIndex]>num[j]){ minIndex = j; //先把最小数的下标记录下来 } } //交换最小值的位置 if(minIndex!=i){ temp = num[minIndex]; num[minIndex] = num[i]; num[i] = temp; } } //输出: for(int i=0;i<num.length;i++){ System.out.print(num[i]+" "); } } } //2 5 18 3 23 100 //2 5 18 3 23 100 --1 5 //2 3 18 5 23 100 --2 4 //2 3 5 18 23 100 --3 3 //2 3 5 18 23 100 --4 2 //2 3 5 18 23 100 --5 1
//直接插入排序算法 public class Test20{ public static void main(String[] args){ int[] num = {2,10,5,22,1}; //要比较的轮数x for(int i=1;i<num.length;i++){ int temp = num[i];//作为每次需要插入的数 int j = 0; for(j=i-1;j>=0;j--){ if(num[j]>temp){ num[j+1] = num[j]; }else{ break; } } num[j+1] = temp; } //输出 for(int i=0;i<num.length;i++){ System.out.print(num[i]+" "); } } } // 2 10 5 22 1 // 2 10 5 22 1 第一轮 1 // 2 5 10 22 1 第二轮 2 // 2 5 10 22 1 第三轮 1 // 1 2 5 10 22 第四轮 4
/** 二分查找算法: 1、数列一定是要有序的 2、目的是为了查找一个数在数列中所在的位置 3、查找的平均速度较快,每次查找会排除范围内的一半数据 4、原理: 每次查找比较的数是数列范围中的相对中间值,大于该中间值就从右边找,小于该中间值 就从左边找,直到找到为止,找不到返回-1,表示数列中没有该数 */ public class BinarySearchDemo { public static void main(String[] args) { int[] num = {10,20,30,50,198,300}; System.out.println(binarySearch(num,10)); } public static int binarySearch(int[] num,int key){ int start = 0;//数组起始位置 int end = num.length-1;//最大的下标 int middle = -1;//中间位置 while(start<=end){ middle = (start+end)/2; if(num[middle]==key){ return middle; }else if(num[middle]<key){ start=middle+1; }else if(num[middle]>key){ end = middle-1; } } return -1; } }
相关文章推荐
- 冒泡 选择 插入排序 顺序 二分查找方法
- 第四篇、C_快速、冒泡、选择、插入排序、二分查找排序、归并、堆排序
- 插入,冒泡,选择,快速排序,二分查找(Java版)
- 冒泡排序,插入排序,二分查找
- java冒泡,选择排序及折半(二分)查找
- 冒泡、选择、二分查找排序
- 补充:二分查找,冒泡,选择
- 排序----冒泡,选择,插入,二分查找
- c语言归并、选择、直接插入、冒泡、快速、堆排序与顺序、二分查找
- 排序算法:冒泡、选择、二分查找
- 插入,冒泡,选择,快速排序,二分查找
- 再看冒泡和选择排序以及折半查找(二分查找)
- 顺序表的增删改查及冒泡、选择排序、二分查找
- 黑马程序员——Java基础--冒泡、选择、二分查找
- 插入,冒泡,选择,快速排序,二分查找(Java版)
- 算法---冒泡排序,快速排序,二分查找(折半查找),选择排序,插入排序
- Java--冒泡、选择排序,二分查找
- java的冒泡排序、选择排序与插入排序与二分查找
- 冒泡排序和选择排序二分查找代码实现
- C 语言 排序算法,冒泡排序,选择排序,插入排序,二分查找