简单的排序算法

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

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 条评论
登录 后参与评论

相关文章

来自专栏Android干货

Python高级特性:切片

652
来自专栏java学习

面试题34(关于接口的理解?)

对接口的描述正确的是? A 一个类可以实现多个接口 B 接口可以有非静态的成员变量 C 接口可以实现方法 D 实现接口的任何类,都需要实现接口的方法 考点:考察...

3146
来自专栏desperate633

LintCode 判断字符串是否没有重复字符题目分析代码

用两种方法,一种借助set没有重复元素的特点,如果add不进去,就说明重复了,就直接returnfalse 第二种方法,设立一个数组,用来判断字符出现的次数,...

552
来自专栏java学习

面试题19(关于return的用法)

执行下列代码的输出结果是? public class Demo { public static void main(String args[]) { int...

2864
来自专栏黑白安全

PHP中函数和语言结构的区别

关于PHP中的函数和语言结构的区别,本文给大伙逐步分析。函数众所周知它的三要素为:函数名、参数、返回值,调用方式采用函数名加括号()的形式进行调用。语言结构可以...

1012
来自专栏AILearning

对==与equals的比较的理解

举例: String s1 = "abc"; String s2 = new String("abc"); String s3 = new String("ab...

1765
来自专栏高性能服务器开发

全排列(含递归和非递归的解法)

全排列在近几年各大网络公司的笔试中出现的比较频繁 首先来看看题目是如何要求的(百度迅雷校招笔试题)。 用C++写一个函数, 如 Foo(const char *...

993
来自专栏算法修养

温故KMP算法

最近由于某些原因,又回顾了一次KMP算法。上一次回顾KMP算法还是在刷题的时候遇到的: http://blog.csdn.net/dacc123/article...

3468
来自专栏java学习

面试题32(关于修饰符的使用?)

下列哪个修饰符可以使在一个类中定义的成员变量只能被同一包中的类访问? A private B 无修饰符 C public D protected 考点:考察求职...

2747
来自专栏aCloudDeveloper

全排列(含递归和非递归的解法)

全排列在近几年各大网络公司的笔试中出现的比较频繁 首先来看看题目是如何要求的。 用C++写一个函数, 如 Foo(const char *str), 打印出 s...

2269

扫码关注云+社区