冒泡排序、选择排序、插入排序和二分法查找
时间:2019-02-18
本文章向大家介绍冒泡排序、选择排序、插入排序和二分法查找,主要包括冒泡排序、选择排序、插入排序和二分法查找使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
public class HelloJava {
public static void main(String[] args){
HelloJava helloJava = new HelloJava();
//helloJava.maoPao();
//helloJava.xuanZe();
//helloJava.chaRu();
//二分法必须保证数列是有序的
int[] num = {2,9,9,33,43,55,67,90};
int i = helloJava.erFen(num, 55);
System.out.print(i);
}
//冒泡排序。冒泡排序是一种稳定的排序(相同元素之间两个位置并没有改变)
public void maoPao(){
int [] num = {55,33,67,2,9,90,9,43};
for (int i=0;i<num.length;i++){
for (int j = 0;j<num.length-i-1;j++){
//从小到大排序
if(num[j]>num[j+1]){
num[j] = num[j]+num[j+1];
num[j+1] = num[j]-num[j+1];
num[j] = num[j]-num[j+1];
}
}
}
for (int n:num){
System.out.println(n);
}
}
//选择排序。选择排序是一种不稳定的排序(相同元素之间两个位置可能会改变),但是速度快。
public void xuanZe(){
int [] num = {55,33,67,2,9,90,9,43};
//用于记录每次比较后最小值的下标
int minIndex = 0;
//控制轮数
for (int i=0;i<num.length;i++){
//假设每轮最小值下标为i
minIndex = i;
for (int j=i+1;j<num.length;j++){
if (num[minIndex]>num[j]){
minIndex=j;
}
}
//判断需要交换的数下标是否为自己
if (minIndex!=i){
num[minIndex] = num[minIndex]+num[i];
num[i] = num[minIndex]-num[i];
num[minIndex] = num[minIndex]-num[i];
}
}
for (int n:num){
System.out.println(n);
}
}
//插入排序.
public void chaRu(){
int [] num = {55,33,67,2,9,90,9,43};
//控制比较的次数
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;
}
}
if (num[j+1]!=temp){
num[j+1] = temp;
}
}
for (int n :num){
System.out.println(n);
}
}
//二分查找。效率极高,常用!(但首先应该是已经排好序的)
public int erFen(int[] num,int key){
//开始下标
int start = 0;
//结束下标
int end = num.length-1;
while (start<=end){
int middle = (start+end)/2;
if (num[middle]>key){
end = middle-1;
}else if(num[middle]<key){
start = middle+1;
}else {
return middle;
}
}
return -1;
}
- HDUOJ-----X问题
- POJ-----C Looooops
- POJ--Strange Way to Express Integers
- HDUOJ----More is better(并查集)
- HDUOJ 1099——Lottery
- HDUOJ-----取(m堆)石子游戏
- HDUOJ-----Be the Winner
- HDUOJ-------- Fibonacci again and again
- HDUOJ----Good Luck in CET-4 Everybody!
- 进制转换
- HDUOJ--畅通工程
- poj----Ubiquitous Religions
- POJ----The Suspects
- HDUOJ----剪花布条
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Thread和goroutine两种方式实现共享变量按序输出
- 浙大版《C语言程序设计(第3版)》题目集 练习2-13 求N分之一序列前N项和
- 浙大版《C语言程序设计(第3版)》题目集 练习2-14 求奇数分之一序列前N项和
- dotnet 双缓存数据结构设计 下载库的文件写入缓存框架
- 浙大版《C语言程序设计(第3版)》题目集 练习2-15 求简单交错序列前N项和
- 浙大版《C语言程序设计(第3版)》题目集 练习2-17 生成3的乘方表
- WPF 漂亮的现代化控件 新 ModernWPF 界面库
- 浙大版《C语言程序设计(第3版)》题目集 练习2-18 求组合数
- 浙大版《C语言程序设计(第3版)》题目集 习题2-1 求整数均值
- PHP 正则表达式 获取富文本中的 img标签的src属性
- 浙大版《C语言程序设计(第3版)》题目集 习题2-2 阶梯电价
- 浙大版《C语言程序设计(第3版)》题目集 习题2-3 求平方与倒数序列的部分和
- 浙大版《C语言程序设计(第3版)》题目集 习题2-4 求交错序列前N项和
- 二十五块DIY 带屏幕可远程的温湿度传感器
- 浙大版《C语言程序设计(第3版)》题目集 习题2-5 求平方根序列前N项和