首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >详细说明一个快速排序的例子

详细说明一个快速排序的例子

作者头像
心跳包
发布2020-08-31 14:59:05
发布2020-08-31 14:59:05
4570
举报

关于快速排序的逻辑原理是这样的:

将两个指针i,j分别指向表的起始和最后的位置,T为临时变量。

反复操作以下两步:

(1)j逐渐减小,并逐次比较j指向的元素和目标元素的大小,若p(j)<T则交换位置。

(2)i逐渐增大,并逐次比较i指向的元素和目标元素的大小,若p(i)>T则交换位置。

直到i,j指向同一个值,循环结束。

下面是源码

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>

void swap(int A[],int i,int j)
{
	int temp=0;
	if(A[i]>A[j])
	{
		temp=A[j];
		A[j]=A[i];		
		A[i]=temp;			
	}	
}

/* 快速排序 */
void quick_sort(int x[],int left, int right)
{
   int temp = left;
   int i;
   if (left >= right)
        return;
    
    for (i = left+1; i<= right; i++)
    {
        if(x[i] < x[left])
            swap(x, ++temp, i);
    }
    swap(x, left, temp);
    quick_sort(x,left, temp-1);
    quick_sort(x,temp+1, right);
}

int main()
{
	int number[]={10,9,8,7,6,5,4,3,2,1};
    int i=0,len;
	printf("start ....\n");	
	len=(int)sizeof(number)/sizeof(*number);
	printf("len =%d\n",len);	
    quick_sort(number,0,9);
	for(i=0;i<10;i++)
	{
	  printf("%d ",number[i] );				
	}
     printf("\n");		
     printf("end ....\n");		
	exit(0);
}

代码已经编译调试过了,亲测可行。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/05/13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档