博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
整理了几种常用的排序算法,留着自己看看
阅读量:6581 次
发布时间:2019-06-24

本文共 2433 字,大约阅读时间需要 8 分钟。

hot3.png

public class Sort {	public static void main(String[] args) {		int[] a = { 8, 7, 3, 5, 4, 2, 1, 6 };		//bubbleSort2(a);		//print(a);		mineQuickSort(a, 0, a.length-1);		display(a);	}	private static void display(int[] a) {		for (int i = 0; i < a.length; i++) {			System.out.print(a[i] + "  ");		}		System.out.println();	}	/**	 * 直接插入排序	 * 	 * @param a	 *   wyq	 */	public static void insertSort(int[] a) {		int temp;		int n = a.length;		for (int i = 0; i < n - 1; i++) {			temp = a[i + 1];			int j = i;			while (j > -1 && a[j] > temp) {				a[j + 1] = a[j];				j--;			}			a[j + 1] = temp;		}	}	/**	 * 直接选择排序	 * 	 * @param a	 *   wyq	 */	public static void selectSort(int[] a) {		int i, j, small;		int temp;		int n = a.length;		for (i = 0; i < n; i++) {			small = i;			for (j = i + 1; j < n; j++)				if (a[j] < a[small])					small = j;			if (small != i) {				temp = a[i];				a[i] = a[small];				a[small] = temp;			}		}	}	/**	 * 冒泡排序1	 * 	 * @param a	 *   wyq	 */	public static void bubbleSort(int[] a) {		int n = a.length;		int temp;		for (int i = 0; i < n; i++) {			for (int j = n - 1; j > i; j--) {				if (a[j] < a[j - 1]) {					temp = a[j];					a[j] = a[j - 1];					a[j - 1] = temp;				}			}		}	}	/**	 * 冒泡排序2	 * 	 * @param a	 *   wyq	 */	public static void bubbleSort2(int[] a) {		int n = a.length;		int temp, flag = 1;		for (int i = 1; i < n && flag == 1; i++) {			flag = 0;			for (int j = 0; j < n - i; j++) {				if (a[j] > a[j + 1]) {					flag = 1;					temp = a[j];					a[j] = a[j + 1];					a[j + 1] = temp;				}			}		}	}	public static void quickSort(int[] a, int low, int high) {		int i, j;		int temp;		i = low;		j = high;		temp = a[low];		while (i < j) {			// 在数组的右端扫描			while (i < j && temp <= a[j]) j--;			if (i < j) {				a[i] = a[j];				i++;			}			// 在数组的左端扫描			while (i < j && a[i] < temp) i++;			if (i < j) {				a[j] = a[i];				j--;			}		}		a[i] = temp;				if (low < i)			quickSort(a, low, i - 1); // 对左端子集合递归		if (i < high)			quickSort(a, j + 1, high); // 对右端子集合递归	}		/**	 * 	 * @param a	 * @param left	 * @param right	 *   中值	 */	public static int partition(int[] a, int left, int right) {		int temp = a[left];				while (left
a[left]) left++; a[right] = a[left]; } a[left] = temp; return left; } /** * 另一种快速排序 * @param a * @param left * @param right */ public static void mineQuickSort(int[] a, int left, int right) { if (left

研究算法真是锻炼人的逻辑思维能力。

转载于:https://my.oschina.net/wangyongqing/blog/72888

你可能感兴趣的文章
Git初始化仓库
查看>>
HTML 标签说明
查看>>
锋利的jQuery-2--判断jQuery获取到的对象是否存在$().length
查看>>
linux 查询系统版本命令、查询端口号是否被占用命令
查看>>
java笔记八:IO流之字符流与字符缓冲流
查看>>
Docker 命令收集
查看>>
myeclipse注册码生成器
查看>>
怎样快速学好PHP技术之PHP学习方法总结
查看>>
《Java工程师成神之路-基础篇》Java基础知识——序列化(已完结)
查看>>
iOS App间相互跳转漫谈 part2
查看>>
Java CAS 原理剖析
查看>>
ISCC2014 writeup
查看>>
Kotlin 知识梳理(1) Kotlin 基础
查看>>
js正则表达式
查看>>
iOS socket通信,编解码,浮点型数据解析
查看>>
手把手教你如何新建scrapy爬虫框架的第一个项目(下)
查看>>
前端基础15:JS作用域基础
查看>>
Linux系统相关命令
查看>>
BATJ面试必会之 Spring 篇(一)
查看>>
表驱动法
查看>>