简单的排序算法

细细一看,我们就明白了为什么这样写的!

import java.util.*;
class  Sort
{
	public static void main(String[] args) 
	{
		//int[] arr = new int[]{2,4,3,1};
	//倒叙排序
		//choiceSort(arr);
		//bubbleSort(arr);

	//顺序排序(java中已经定义好的一种排序方式,开发中,对数组排序,要使用该句代码)
		Arrays.sort(arr);
		
		for(int i : arr){
			System.out.print(i+"—");
		}
	}
	//选择排序(第一个数依次对比后面的各个数)
	public static void choiceSort(int[] arr){
		//选择排序就是两个数一起排列,所以第一个数最大只能为倒数第二位数
		for(int i=0;i<arr.length-1;i++){
			for(int j=i+1;j<arr.length;j++){
				//大到小排序
				int temp=0;
				//第一个数的最大值的范围在[0————length-2]之间
				//第二个数的最大值的范围在[1————length-1]之间
				if(arr[i]<arr[j]){
					temp = arr[i];
					arr[i] = arr[j];
					arr[j] = temp;
				}
			}
		}
		System.out.println("选择排序");
	}
	//冒泡排序(依次向后对比相邻的两个数)
	public static void bubbleSort(int[] arr){
		//相邻数进行相比较,那么前一个数必定最大只能是倒数第二位数
		for(int i=0;i<arr.length-1;i++){
			for(int j=0;j<arr.length-1-i;j++){
				//大到小排序
				int temp=0;
				//第一个数的最大值的范围在[0————length-2]之间
				//第二个数的最大值的范围在[1————length-1]之间
				if(arr[j]<arr[j+1]){
					temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;
				}
			}
		}
		System.out.println("冒泡排序");
	}
}

折半算法

class  IndexSort
{
	public static void main(String[] args) 
	{
		int[] arr = new int[]{2,4,5,7,9,23,43};
		int index = binarySearch(arr,8);
		System.out.println(index);
	}
	//折半插入算法
	public static int binarySearch(int[] arr,int num){
		int min = 0,mid;
		int max = arr.length;
		while(min<=max){
			mid = (min+max)>>1; //(min+max)/2
			if(num<arr[mid]){
				max = mid-1;
				System.out.println("max"+max);
			}else if(num > arr[mid]){
				min = mid+1;
			}else{
				return mid;
			}
		}
		return min;	//获取num比集合中的最小值的下标:min ,或者获取num比集合中最大值得下标: max+1 ;
	}
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏LEo的网络日志

c库函数strncat出现乱字符

3497
来自专栏Go入门系列

Golang 入门系列(三)Go语言基础知识汇总

前面已经了 Go 环境的配置和初学Go时,容易遇到的坑,大家可以请查看前面的文章 https://www.cnblogs.com/zhangweizhong/c...

472
来自专栏编程

关于正则表达式的5个小贴士

正则表达式是一个非常强大的处理字符工具,但有时可读性很差、晦涩难懂,Jamie Zawinski 说道: Some people, when confronte...

1728
来自专栏漫漫全栈路

ASP.NET MVC 行为详解

前面分别介绍了MVC中的三个重要部分,而行为,则是其中C-Controller中的重要内容,下面详解一二。 一般继承自Controller类,类Controll...

2684
来自专栏腾讯NEXT学位

前端简洁并实用的工具类

28413
来自专栏维C果糖

史上最简单的 MySQL 教程(四十三)「函数」

函数,就是将一段代码封装到一个结构中,在需要执行该段代码的时候,直接调用该结构(函数)执行即可。此操作,实现了代码的复用。在 MySQL 中,函数有两种,分别为...

3616
来自专栏猿人谷

成员以其在类中声明的顺序构造

分析以下代码的输出: #include<iostream> using namespace std; class A { public: A(int j):...

1756
来自专栏玄魂工作室

Python黑帽编程2.7 异常处理

异常是个很宽泛的概念,如果程序没有按预想的执行,都可以说是异常了。遇到一些特殊情况没处理会引发异常,比如读文件的时候文件不存在,网络连接超时。程序本身的错误也可...

2749
来自专栏Micro_awake web

es6(二):解构赋值

ES中允许按照一定格式从数组,对象值提取值,对变量进行赋值,这就是解构(Destructuring) 1 let [a,b,c]=[1,10,100] 2 ...

1885
来自专栏令仔很忙

理解javascript作用域和作用域链

作用域就是变量和函数的可访问范围,控制着变量和函数的可见性与生命周期,在JavaScript中变量的作用域有全局作用域和局部作用域。

581

扫码关注云+社区