快速排序

来源:互联网 发布:薛之谦淘宝店铺关门了 编辑:程序博客网 时间:2024/05/29 17:05

# 简单实现快速排序


(1) 首先实现 Partition 函数,

          函数功能:实现快速排序算法的关键在于在数组中选择一个数字,接下来把数组中的数字分为两部分,比选择

的数字小的数字一道数组的左边,比选择数字大的数字一道数组的右边;

(2) 实现QuickSort 函数;

          函数功能: 调用Partition 函数,递归的实现快速排序;
  
注意:算法中调用RandomInRange函数(随机产生start 和end 中间的一个数) 和 Swap 函数(交换两个数的容);


# 代码实现: 

#include<stdio.h>#include<stdlib.h>int Partition(int data[], int length, int start, int end){int index;int Small;if(data == NULL || length <= 0 || start < 0 || end >= length)return ;index = RandomInRange(start, end);//RandomInRange 是随机产生start和end中间的一个数;Swap(&data[index], &data[end]);//Swap 是交换两个数的函数;Small = start -1;for(index = start; index < end; ++index){if(data[index] < data[end]){++Small;if(Small != index)Swap(&data[index], &data[Small]);}}++Small;Swap(&data[Small], &data[end]);return Small;}void QuickSort(int data[],int length, int start, int end){int index;if(start == end)return ;index = Partition (data, length, start, end);if(index > start)QuickSort (data, length, start, index - 1);if(index < end)QuickSort(data, length, index -1, end);}int main(){int arr[] = {3,2,5,4,6,2,3,7,8,1};QuickSort(arr,10,0,9);//调用时 start 传 0,end 传length - 1;system("pause");return 0;}



1 0
原创粉丝点击