常见排序算法 总结

@[TOC]常见排序方法总结

快速排序

伪代码(由小至大)

quickSort(A,left,right):
 if left<right:
	q = partition(A,left,right)
	quickSort(A,left,q-1)
	quickSort(A,q+1,right)

partition(A,left,right):
	x = A[right]
	i = left - 1
	for j = left to right -1:
		if A[j] <= x:
			i= i+1
			exchange(A[i],A[j])
	exchange(A[i+1],A[right])
	return i+1
//随机选取比较基准值
random-partition(A,left,right):
	index = random(left,right)
	exchange(A,right,index)
	return partition(A,left,right)

patition执行过程中将数组分为了四个区域(图中p,r对应left,right)
patition执行过程中将数组分为了四个区域
终止时,j=r,partition将数组分为了三个区域。
Java实现(ps根据伪代码很容易转化为任何编程语言~~)

public void quickSort(int[] nums,int left, int right){
	if(left<right){
		int q = partition(nums,left,right);
		quickSort(nums,left,q-1);
		quickSort(nums,q+1,right);
	}
}
public int partition(int[] nums, int left, int right){
	int x = nums[right];
	int i = left-1;
	for(int j = left; j<right;j++){
		if(nums[j]<=x){
			i++;
			swap(nums,j,i);
		}
	}
	swap(A,i+1,right);
	return i+1;
}
public void swap(int[] A, int index1,int index2){
	int temp = A[index1];
	A[index1] = A[index2];
	A[index2] = temp;
}
 @Test
    public void testQuick(){
        int[] nums = {3,2,5,4,9,10,7,100,1,0};
        quickSort(nums,0,nums.length-1);
        String res = "";
        for(int i =0;i<nums.length;i++){
            res = res + Integer.toString(nums[i]) + ",";
        }
        System.out.println(res);
    }

leetcode题目相关
一、最小的K个数
https://blog.csdn.net/weiyang__/article/details/112383840

插入排序

未完待续。。。。

参考
1、算法导论第三版

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值