`

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

阅读更多

 

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

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

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

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

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

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

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

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

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

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

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

    几种常用排序算法实现及耗时比较

    包括冒泡排序,选择排序,插入排序,希尔排序,快速排序等常用排序算法的实现并耗时比较

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

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

    各种排序算法的实验(源代码+实验报告)

    3. **其他可能包含的排序算法**:除了快速排序和堆排序,这个资源可能还包含了其他的排序算法,如冒泡排序、插入排序、选择排序、归并排序、希尔排序、计数排序、桶排序、基数排序等。这些算法各有特点,适用于不同...

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

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

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

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

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

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

    详解Java常用排序算法-选择排序

    详解Java常用排序算法-选择排序 选择排序(Selection Sort)是一种简单的排序算法,它的基本思想是每次从待排序的元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的元素排完。 选择...

    常用排序算法--堆排序

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

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

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

    黑马程序员匠心之作 C++教程_第7阶段-C++实战项目机房预约讲义.rar

    《黑马程序员匠心之作 C++教程_第7阶段-C++实战项目机房预约讲义》是为C++初学者量身定制的一份详细教学资源。这份讲义深入浅出地介绍了C++编程语言,并通过实际的机房预约系统项目,帮助学习者将理论知识与实践相...

    c语言常用算法-----列举C语言各种常用算法

    本文将针对C语言中的常用算法进行详细阐述,旨在帮助编程者更好地理解和应用这些基础算法,提升编程能力。 1. **排序算法**: - 冒泡排序:通过不断交换相邻的不正确顺序元素来达到排序目的,时间复杂度为O(n^2)。...

    数据结构--课程设计(多种排序算法 有界面)

    数据结构 课程设计 多种排序算法 有界面 数据结构 课程设计 多种排序算法 有界面 数据结构 课程设计 多种排序算法 有界面 数据结构 课程设计 多种排序算法 有界面 数据结构 课程设计 多种排序算法 有界面

Global site tag (gtag.js) - Google Analytics