现在的位置: 首页 > 综合 > 正文

简单的排序算法

2018年06月09日 ⁄ 综合 ⁄ 共 1338字 ⁄ 字号 评论关闭

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

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 ;
	}
}

抱歉!评论已关闭.