Java与python算法实现快速排序法及其测试

19 篇文章 0 订阅

public class quick_sort {
	public static void main(String[] args) {
		int Array[]=new int[10];
		for (int i=0;i<Array.length;i++) {
			Array[i]=(int)(100*Math.random());
		}
		System.out.println("排序前的数组");
		for (int i=0;i<Array.length;i++) {
			System.out.println(Array[i]);
		}
		Array=quick_sort_method(Array,0,Array.length-1);
		System.out.println("排序后的数组");
		for (int i=0;i<Array.length;i++) {
			System.out.println(Array[i]);
		}		
	}
	public static int[] quick_sort_method(int[] array,int start,int end) {
		if(array.length<1||start<0||end>array.length||start>end)
			return null;
		int smallIndex=partition(array,start,end);//获取index是分区的点
		if(smallIndex>start)
			quick_sort_method(array,start,smallIndex-1);
		if(smallIndex<end)
			quick_sort_method(array,smallIndex+1,end);
		return array;
	}
	private static int partition(int[] array, int start, int end) {
		int base=array[end];
		int pos=start-1;
		int temp;
		for(int i=start;i<=end;i++) {
			if(array[i]<=base) {
				pos=pos+1;
				temp=array[pos];
				array[pos]=array[i];
				array[i]=temp;	}		
		}
		return pos;
	}

}
# -*- coding: utf-8 -*-
"""
Created on Wed Jul 31 16:11:18 2019

@author: pt0521
"""

def quick_sort(array, l, r):
    if l < r:
        q = partition(array, l, r)
        quick_sort(array, l, q - 1)
        quick_sort(array, q + 1, r)
 
def partition(array, l, r):
    x = array[r]#以右边的数为基准
    i = l - 1#目前有0个数比基准数小
    for j in range(l, r):
        if array[j] <= x:#判断左边有几个数比基准数小
            i += 1
            array[i], array[j] = array[j], array[i]#把比基准数小的数放在应该放的序位上去
    array[i + 1], array[r] = array[r], array[i+1]
    return i+1

if __name__=='__main__':
    a=[1,24,27,89,56,2,89,12,11]
    quick_sort(a,0,len(a)-1)
    print(a)

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值