排序算法之快速排序原理与实战

说道排序,我相信大家并不模式。在写程序的生涯中我们随处可见到排序的使用场景,例如数据库sql排序。排序的算法有很多种,同时java等语言也都提供了排序的接口,方便大家进行简单排序功能。关于排序算法有很多种,如快速排序、直接插入排序、希尔排序、简单选择排序、二元选择排序、冒泡排序等。这些排序我将写一系列的文章进行原理解析和实例演示。

快速排序的原理是:使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。
基本思想:选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素,此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。
快速排序分解图如下:
排序算法之快速排序原理与实战
快速排序具体实例源码如下:

package com.xttblog.sort;

public class QuickSort {
	//快速排序
	private static void quickSort(int s[], int l, int r){
		if(l>=r)
			return;
	    //将中间的这个数和第一个数交换 参见注1
		int i = l, j = r, x = s[l];
		while (i < j){
			while(i < j && s[j] >= x) // 从右向左找第一个小于x的数
				j--;  
			if(i < j) 
				s[i++] = s[j];
			
			while(i < j && s[i] < x) // 从左向右找第一个大于等于x的数
				i++;  
			if(i < j) 
				s[j--] = s[i];
		}
		s[i] = x;
		quickSort(s, l, i - 1); // 递归调用 
		quickSort(s, i + 1, r);
	}
	
	public static void main(String[] args) {
		int s [] = {67,23,89,35,28,90,10,24};
		for (int i : s) {
			System.out.print(i+" ");
		}
		quickSort(s,0,7);
		System.out.println();
		for (int i : s) {
			System.out.print(i+" ");
		}
		//排序前后输入结果为:
		//67 23 89 35 28 90 10 24 
		//10 23 24 28 35 67 89 90 
	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。原文地址http://www.xttblog.com/?p=433

排序算法之快速排序原理与实战

: » 排序算法之快速排序原理与实战

原创文章,作者:3628473679,如若转载,请注明出处:https://blog.ytso.com/251433.html

(0)
上一篇 2022年5月3日
下一篇 2022年5月3日

相关推荐

发表回复

登录后才能评论