我也写个快速排序

#include<stdio.h>

int p(int a[], int L, int R)
{
	int i=L, j=R;
	int temp = a[L];

	while(i < j)
	{
		while(a[j]>temp) j--;//从右往左找比temp大的

		if(j>i)
		{
			a[i]=a[j];
			a[j]=temp;
		}
		while(a[i]<temp) i++;//从左往右找比temp小的

		if(j>i)
		{
			a[j]=a[i];
			a[i]=temp;
		}
	}

	return i;
}

void quick_sort(int a[], int L, int R)
{	
	if(L>=R)
		return;

	int m=p(a, L, R);
	quick_sort(a, L, m-1);
	quick_sort(a, m+1, R);
}

void main()
{
	int a[]={9,8,7,6,5,4,3,2,1};
	//int a[]={1,2,3,4,5,6,7,8,9};
	int i;
	for(i=0; i<9; ++i)
	{
		printf("%d	", a[i]);
	}

	quick_sort(a,0,8);

	printf("\n");

	for(i=0; i<9; ++i)
	{
		printf("%d	", a[i]);
	}
	printf("\n");

}

转载于:https://my.oschina.net/u/1762296/blog/228569

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,我可以为您提供快速排序的Python代码。以下是示例代码: ```python def quicksort(arr): if len(arr) <= 1: return arr pivot = arr[len(arr)//2] left = [x for x in arr if x < pivot] middle = [x for x in arr if x == pivot] right = [x for x in arr if x > pivot] return quicksort(left) + middle + quicksort(right) ``` 您可以将您要排序的数组传递给这个函数,如下所示: ```python my_array = [3, 6, 1, 2, 8, 4, 5] sorted_array = quicksort(my_array) print(sorted_array) ``` 这将打印已排序的数组: ``` [1, 2, 3, 4, 5, 6, 8] ``` 希望这可以帮助您。 ### 回答2: 快速排序是一种常用的排序算法,它通过将一个数组分成两个子数组来执行排序。下面是使用Python编写的快速排序算法的示例代码: ```python def quick_sort(arr): if len(arr) <= 1: return arr pivot = arr[len(arr) // 2] left = [x for x in arr if x < pivot] middle = [x for x in arr if x == pivot] right = [x for x in arr if x > pivot] return quick_sort(left) + middle + quick_sort(right) ``` 这个快速排序算法的思想是选择数组中的一个元素作为基准(通常选择中间的元素),然后将数组分成比基准小的元素和比基准大的元素两部分。接下来,对这两个子数组分别递归地应用快速排序算法,最后将排序后的子数组和基准元素合并起来。 这个算法的时间复杂度为O(nlogn),其中n是数组的长度。快速排序是一种高效的排序算法,在实际应用中非常常见。 ### 回答3: 快速排序是一种常用的排序算法,其思想是通过将一个待排序的数组分割成两部分,其中一部分数组中的元素都比另一部分数组中的元素小,然后对两部分数组分别进行排序,最后将两部分数组合并起来。 以下是使用Python编写的快速排序算法: ```python def quick_sort(arr): if len(arr) <= 1: return arr pivot = arr[len(arr) // 2] # 选取中间元素作为基准值 left = [x for x in arr if x < pivot] # 比基准值小的元素放在左边 middle = [x for x in arr if x == pivot] # 与基准值相等的元素放在中间 right = [x for x in arr if x > pivot] # 比基准值大的元素放在右边 return quick_sort(left) + middle + quick_sort(right) # 分别对左右两部分进行排序 # 调用示例 arr = [5, 3, 8, 6, 2, 7, 1, 4] sorted_arr = quick_sort(arr) print(sorted_arr) ``` 以上代码定义了一个快速排序的函数`quick_sort`,该函数接收一个待排序的数组作为输入,并返回排序后的数组。在函数内部,首先判断数组长度是否小于等于1,如果是,则直接返回原数组。否则,选择一个基准值(这里选择中间元素),将比基准值小的元素放在左边,与基准值相等的元素放在中间,比基准值大的元素放在右边。然后对左右两部分数组分别调用递归函数`quick_sort`进行排序,最后将排序好的左部分数组、中间数组和右部分数组合并起来,并返回结果。 示例中先定义一个待排序的数组`arr`,然后调用`quick_sort`函数进行排序,并将排序后的结果打印输出。 输出结果为`[1, 2, 3, 4, 5, 6, 7, 8]`表示数组经过快速排序后的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值