`

黑马程序员-几种常用排序算法

 
阅读更多

 

------- android培训java培训、期待与您交流! ----------
package com.itheima.util;

/**
 * 排序工具类
 * 
 * @author mrng
 * 
 */
public class SortUtils {
	/**
	 * 快速排序 如果调用此方法,次方法会再掉用quickSort(String[] strArr, int left, int rigth)方法
	 * left默认为0, right默认为strArr.length-1
	 * 
	 * @param strArr
	 */
	public static void quickSort(int[] arr) {
		quickSort(arr, 0, arr.length - 1);
	}

	/**
	 * 快速排序 此方法可以对数组需要排序的区间进行定制
	 * 
	 * @param strArr
	 * @param left
	 * @param right
	 */
	public static void quickSort(int[] arr, int left, int right) {
		// 数组中间的元素
		int middle = arr[(left + right) / 2];
		// 临时变量,用于交换数组元素使用
		int temp;
		// 向后搜索的指针
		int i = left;
		// 向前搜索的指针
		int j = right;

		do {
			while (arr[i] < middle && i < right)
				i++; // 找出左边比中间值大的数
			while (arr[j] > middle && j > left)
				j--; // 找出右边比中间值小的数
			if (i <= j) { // 将左边大的数和右边小的数进行交换
				temp = arr[i];
				arr[i] = arr[j];
				arr[j] = temp;

				i++;
				j--;
			}
		} while (i <= j); // 当两个指针交错时停止

		// 将数组分开两半,确定每个数字的正确位置
		if (i < right) {
			quickSort(arr, i, right);
		}
		if (j > left) {
			quickSort(arr, left, j);
		}
	}

	/**
	 * 冒泡排序法
	 * 
	 * @param arr
	 */
	public static void BubbleSort(int[] arr) {
		for (int i = 0; i < arr.length - 1; i++) {
			for (int j = 0; j < arr.length - i - 1; j++) {
				if (arr[j] > arr[j + 1]) {
					arr[j] = arr[j] ^ arr[j + 1];
					arr[j + 1] = arr[j] ^ arr[j + 1];
					arr[j] = arr[j] ^ arr[j + 1];
				}
			}
		}
	}

	/**
	 * 选择排序法
	 */
	public void SelectSort(int[] arr) {
		for (int i = 0; i < arr.length - 1; i++) {
			for (int j = i + 1; j < arr.length; j++) {
				if (arr[i] > arr[j]) {
					arr[i] = arr[i] ^ arr[j];
					arr[j] = arr[i] ^ arr[j];
					arr[i] = arr[i] ^ arr[j];
				}
			}
		}
	}
}

 

 ------- android培训java培训、期待与您交流! ----------

详细请查看:http://edu.csdn.net/heima/

 

分享到:
评论

相关推荐

    Java常用排序算法程序员必须掌握的8大排序算法

    冒泡排序--Java常用排序算法程序员必须掌握的8大排序算法

    数据结构(C语言)--8种排序算法.pdf

    数据结构(C语言)--8种排序算法.pdf

    几种常用排序算法的C语言实现

    一些常用排序算法的C语言实现,包括直接选择排序,希尔排序,直接插入排序,快速排序,归并排序,冒泡排序,堆排序

    数据结构--九种排序算法 --排序001.cpp

    此文件为数据结构中的九种排序算法,包含一些排序方法的过程,其九种排序包括:直接插入排序,折半插入排序,希尔排序,冒泡排序,快速排序,选择排序,堆排序,归并排序,基数排序!

    数据结构--课程设计 内部排序算法比较,几大常用算法

    设计一个测试程序比较几种内部排序算法的关键字比较次数和移动次数以取得直观感受。 【基本要求】 (1)实现各种内部排序。包括冒泡排序,直接选择排序,希尔排序,快速排序,堆排序。 (2) 待排序的元素的关键字为整数...

    常用排序算法总结 常用排序算法总结 常用排序算法总结

    常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结

    python常用排序算法汇总

    该程序包含7大排序算法: # sort.bubbleSort() #冒泡排序 # sort.shellSort() #希尔排序 # sort.insertionSort() #插入排序 # sort.Selectionsort1() #选择排序 # sort.heapSort() #堆排序 # sort.countSort() ...

    C++黑马程序员学习资料

    C++黑马程序员学习资料,附赠《InterviewGuide第四版By阿秀》、《LeetCode刷题手册》、《背包问题九讲》、《算法图解》pdf版本,三个基础课程文档手册及三个实验项目,由简到繁分别为《通讯录管理系统》、《职工管理...

    程序员必懂Java常用八大排序算法解析及其应用场景

    内容概要:本文全面介绍了程序员常用的八大排序算法,分别涉及四种主要类别:插入排序、交换排序、选择排序以及分配排序。文中详细解释了每种排序算法的基本思想,并提供了具体的 Java 实现代码。排序算法包括直接...

    用C语言实现常用排序算法

    本项目旨在实现并比较六种经典的排序算法——直接插入排序、折半插入排序、起泡排序、简单选择排序、堆排序以及2-路归并排序,使用C语言编程。为了全面评估这些算法,我们将在一组随机生成的30000个整数上运行它们,...

    Java常用排序算法程序员必须掌握的8大排序算法Java开

    学习资料如"Java常用排序算法程序员必须掌握的8大排序算法Java开发Java经验技巧共16页.pdf"可以提供详细的讲解和示例,帮助你更好地理解和实践这些算法。同时,这些排序算法不仅限于Java,也广泛应用于Python、C语言...

    百战程序员-AI算法工程师就业班快速入门.mp4

    百战程序员-AI算法工程师就业班快速入门.mp4

    C++实现常用排序算法

    本文将深入探讨C++实现的几种常见排序算法:冒泡排序、选择排序、插入排序、归并排序、快速排序以及堆排序。 1. **冒泡排序**: 冒泡排序是一种简单的排序算法,它重复地遍历待排序的数列,一次比较两个元素,如果...

    7种常用排序算法实现(C++)(冒泡排序、选择排序、直接插入排序、希尔排序、堆排序、归并排序以及快速排序)

    这里我们将深入探讨七种常用的排序算法,并通过C++语言实现它们。这七种算法分别是:冒泡排序、选择排序、直接插入排序、希尔排序、堆排序、归并排序和快速排序。 1. **冒泡排序**: 冒泡排序是最基础的排序算法之...

    程序员需知的8大排序算法.doc

    本文将详细介绍Java程序员需要了解的8种排序算法。 1. **直接插入排序** - 基本思想:直接插入排序是一种简单的排序方法,它通过将待插入元素与已排序序列中的元素依次比较,找到合适的位置插入,从而保持已排序...

    深入浅出-C语言8种经典排序算法

    这些算法都是在程序设计中常用的排序方法,了解这些算法对于程序员来说非常重要。 冒泡排序 冒泡排序是一种稳定的排序算法。其原理是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生...

    程序员小吴 - 一起来学算法吧!.zip

    程序员小吴 - 一起来学算法吧!原油小吴一起来学算法吧! 最新消息TwoSum相关问题思路总结写了一个小程序,也许能更方便的学习算法这可能是东半球讲十大排序算法最好的一篇文章毕业十年后,我渴望得到一份会计师的...

    2009软考程序员:排序算法的各趟排序算法

    下面我们将深入探讨几种常见的排序算法及其各趟排序过程。 1. 冒泡排序(Bubble Sort) 冒泡排序是一种简单直观的排序算法,通过比较相邻元素并交换位置来完成排序。在每趟排序中,最大或最小的元素会“浮”到序列...

    常用排序算法--堆排序

    常用的排序算法--堆排序,通过创建堆的方法进行排序

    《算法设计与分析》实验报告---快速排序.pdf

    快速排序算法的实现可以分为以下几个步骤: 1. 选择pivot元素:选择数组中的一个元素作为pivot,可以随机选择或选择数组的中间元素。 2. 分区:将数组分成两个部分:左侧元素都小于pivot,右侧元素都大于pivot。 3....

Global site tag (gtag.js) - Google Analytics