三种数组排序算法(冒泡排序、选择排序、插入排序、二分查找法)
来源:互联网 发布:淘宝微淘官网首页 编辑:程序博客网 时间:2024/05/22 13:50
三种数组排序算法(冒泡排序、选择排序、插入排序、二分查找法)
冒泡法排序(BubbleSort)
特点: 两两相邻比较
int[] arr = new int[]{1,7,2,5,4,8,6,9,10,3}; for(int i = 0; i < arr.length; i++){ // 升序 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; } } }
选择排序(ChoiceSort)
特点:查找出最小值记录其下标,一次循环之后,将其与前面的元素交换值;
int k = 0,min; int[] arr = new int[]{1,7,2,5,4,8,6,9,10,3}; for(int i = 0; i < arr.length - 1; i++){ min = arr[i]; for(int j = i + 1; j < arr.length; j++ ){ if(min > arr[j]){ k = j; min = arr[j]; } } int temp = arr[i]; arr[i] = arr[k]; arr[k] = temp; }
插入排序(InsertSort)
特点:将后面的数与前面的数比较大小并转换值;
int[] arr = new int[]{1,7,2,5,4,8,6,9,10,3}; for(int i = 1; i < arr.length - 1; i++){ for(int j = 0; j < i; j++ ){ if(arr[i] < arr[j]){ int temp = arr[j]; arr[j] = arr[i]; arr[i] = temp; } } }
二分查找法(BinarySort)
前提:在已排序的数组中进行查找
特点:从中间开始对数组进行查找,如果N小于中间数,则对左半部分进行查找,如果N大于中间数,则对右半部分进行查找直到找到元素
int n = (int) (Math.random() * 20 + 1); // 1-100的随机数 boolean b = false; int[] arr = new int[]{1,7,2,5,4,8,6,9,10,3}; Arrays.sort(arr); // 先对数组进行排序 int first = 0,last = arr.length - 1,mid = arr.length / 2; while(first <= last){ if(n == arr[mid]){ b = true; break; }else if(n > arr[mid]){ first = mid + 1; }else if(n < arr[mid]){ last = mid - 1; } mid = (first + last) / 2; } if(b){ System.out.print("查找成功!\n数组的下标为: " + mid ); }else{ System.out.print("查找失败!"); }
可使用: java.util.Arrays类中的BinarySearch方法 Arrays.binarySearch(arr,n); // 返回数组下标
0 0
- 三种数组排序算法(冒泡排序、选择排序、插入排序、二分查找法)
- 经典算法:二分查找、插入排序、选择排序、冒泡排序
- 经典算法:二分查找、插入排序、选择排序、冒泡排序
- 经典算法:二分查找、插入排序、选择排序、冒泡排序
- 冒泡排序,选择排序,直接插入排序,二分查找排序
- 基础排序算法总结(插入、选择、冒泡、合并、二分查找、堆排序、快速排序、基数排序、桶排序、计数排序)
- 第九讲 数组排序算法:冒泡排序、选择排序、插入排序及二分查找技术
- 冒泡排序、选择排序、二分查找法
- 插入,冒泡,选择,快速排序,二分查找
- 排序----冒泡,选择,插入,二分查找
- Java冒泡,快速,插入,选择排序^_^+二分算法查找
- 冒泡排序、选择排序、插入排序以及二分法查找算法
- Java数据结构算法之选择排序、插入排序、冒泡排序、二分查找
- 基础排序算法(冒泡排序、选择排序、插入排序)
- 排序算法一(冒泡排序、选择排序、插入排序)
- 排序算法(冒泡排序、选择排序、插入排序)
- 基本排序算法(冒泡排序,选择排序,插入排序)
- 排序算法一(冒泡排序、选择排序、插入排序)
- Sql server事物回滚二(根据条件判断)
- 正则应用法则
- poj 1273 Drainage Ditches 网络流最大流入门 ford-fulkerson
- webscoket rfc6455 中文版链接
- 费马小定理
- 三种数组排序算法(冒泡排序、选择排序、插入排序、二分查找法)
- android listview 局部刷新
- mapreduce之shuffle原理
- sql serverl 事物回滚三(try...catch事务回滚)
- redis.conf配置文件解析
- wpa_supplicant wifi密码错误检测
- InputStream类的available()方法获取流的长度
- ProgressDialog(进度条)
- java 初始化及执行顺序