算法一直是一块短板,今后会陆续写一些常用算法的实现,希望和大家一起探讨学习。
快速排序是排序算法中最经典的一个,原理就不再赘述了,直接上代码。欢迎大家拍砖指导。
import java.util.Arrays;
/**
* 快速排序
*
* @author aaron-han
*
*/
public class QuickSort {
public static void main(String[] args) {
int[] arr = com.utils.Utils.randomIntArray();
quickSort(arr, 0, arr.length - 1);
System.out.println(Arrays.toString(arr));
}
public static void quickSort(int[] arr, int low, int high) {
if (low < high) {
int mid = partition(arr, low, high);
quickSort(arr, low, mid - 1);
quickSort(arr, mid + 1, high);
}
}
private static int partition(int[] arr, int low, int high) {
int pivot = arr[low];
int i = low;
int j = high;
while (i < j) {
while (i < j && arr[j] >= pivot) {
j--;
}
while (i < j && arr[i] <= pivot) {
i++;
}
if (i < j) {
swap(arr, i, j);
}
}
swap(arr, low, j);
return j;
}
private static void swap(int[] arr, int i, int j) {
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
分享到:
相关推荐
程序运行后,在当前文件夹下(程序)先生成一个有5000个整数的text1文件,然后从中读取文件,将5000数升值排序后写到text2文件中
在快速排序法基础上提供了一些改进,比基本的快速排序更方便简洁
在这份文档中,我用C语言实现了排序算法的多种方法,包括插入排序、选择排序、冒泡排序、希尔排序、归并排序、快速排序、桶排序和基数排序。这些算法可以帮助我们对数据进行有效的排序和整理,以便更好地处理和分析...
快速排序是一种高效的排序算法,其核心思想是通过选取一个基准元素,将数组分割为两个子数组,其中左边的子数组元素都小于基准元素,右边的子数组元素都大于基准元素。然后递归地对左右子数组进行排序,直到整个数组...
这是本人在研一上课时所整理的文档,包括冒泡排序,直接插入排序,直接选择排序,希尔排序,归并排序,快速排序和堆排序这七种常用的排序方法,这些文章不仅使我在考试中取了不错的成绩,也为后来顺利面过迅雷,腾讯...
算法-理论基础- 排序- 快速排序(包含源程序).rar
通过C语言数据结构二叉树来实现遍历、冒泡排序、快速排序等算法的实现。本设计将主要包括以下内容: ## 一、研究背景 二叉树是一种重要的数据结构,在计算机科学领域中被广泛应用。二叉树不仅是一种数据结构,而且...
算法基础 参加ACM掌握算法 经典排序和查找算法
快速排序算法的C++实现,采用随机数作为基准
排序算法基础、改进综合: //冒泡排序 //定向冒泡[鸡尾酒]排序 //选择排序 //改进的选择排序 //直接插入排序 //二分插入排序 //希尔排序 //自顶向下地归并排序 //自底向上地归并排序 //堆排序 //快速排序 //改进的...
本实验含有四部分内容——直接插入排序、希尔排序、选择排序、快速排序,在上述内容的基础上,将所有排序算法整合在一个程序中。学生可参考教材中的伪代码。鼓励学生自创新思路,新算法。
初学C语言必须掌握的一些基础知识,包括直接选择排序、直接插入排序、冒泡排序、快速排序。 查找算法,二叉排序树,二叉树层次遍历,二叉树非递归遍历,二叉树的建立,关键字匹配查找等。 如有问题,可随时私信。 ...
在第一版的基础上新加了对冒泡排序,直接插入排序,直接选择排序,希尔排序,归并排序,快速排序和堆排序这七种常用的排序方法的总结篇,方便大家复习,合适作为笔试面试前的复习资料。
1 在掌握各种排序方法的排序过程的基础上,完成快速排序算法程序设计。 2 能够对排序算法进行基本的复杂度分析。
快速排序 随机化快速排序 双路快速排序 三路快速排序 堆和堆排序 堆的基本存储 ShiftUp ShiftDown 基础堆排序和Heapify 优化的堆排序 索引堆(IndexHeap) 索引堆的优化 二分搜索树 二分查找法(Binary Search) 二分...
使用回溯法实现的快速排序,这个是每个学算法的学生都必须会的基础算法之一
排序的基本概念以及其算法的种类,介绍几种常见的排序算法的算法:冒泡排序、选择排序、插入排序、归并排序、快速排序、希尔排序的算法和分析它们各自的复杂度,然后以表格的形式,清晰直观的表现出它们的复杂度的...
基础五大排序算法(冒泡+排序+插入+希尔+快速)简述,算法数据结构 五大常用算法
7.2 快速排序算法的性能特征 7.3 栈大小 7.4 小的子文件 7.5 三者取中划分 7.6 重复关键字 7.7 字符串和向量 …… 第8章 归并与归并排序 第9章 优先队列和堆排序 第10章 基数排序 第...
算法基础,带期限的作业排序,贪心算法,VC++