排序算法C++代码——快速排序
来源:互联网 发布:知乎小说推荐知乎言情 编辑:程序博客网 时间:2024/06/06 04:04
大家都说快排不太容易理解,我给大家简单讲一下。
不复制别人说的话了,自己按自己想的说,全是大白话哈哈:
- 第一次,设定范围为整体。
- 随机选个数,大于它的放右边,小于它的放左边。
- 设定范围为左边小于刚才随机数的范围,走步骤2,3,4.
- 设定范围为右边大于刚才随机数的范围,走步骤2,3,4.
- 若分不出左右边了,则完成排序。
#include <iostream>using namespace std;///////////////////////////////////////////////////////////////////////// /// @brief 快速排序/// @param[in] pTemp 原始序列/// @param[in] nNum 原始序列长度/// @param[out] 0:成功 1:失败///////////////////////////////////////////////////////////////////////// int quickSort( int*& pFaseSortData, int nStartIndex, int nEndIndex );void main(){//插入排序int nSize = 100;int* pFaseSortData = new int[nSize];for( int i = 0; i < nSize; i++ )pFaseSortData[i] = nSize - 1 - i;if( quickSort( pFaseSortData, 0, nSize - 1 ) == 0 )cout<<"快速排序完成!\n";elsecout<<"快速排序失败!\n";for( int i = 0; i < nSize; i++ )cout<<pFaseSortData[i]<<endl;delete[] pFaseSortData;}int quickSort( int*& pFaseSortData, int nStartIndex, int nEndIndex ){int i,j;i = nStartIndex;j = nEndIndex;if( ( pFaseSortData == NULL ) || ( ( nEndIndex - nStartIndex ) == 0 ) )return -1;while( i < j ){//拿第i个元素和第j个元素比较,若小,则减小j,然后再和j元素比较,若大,则两个数互换位置while( i < j && pFaseSortData[i] <= pFaseSortData[j] )j--;if( i < j ){ int nTemp = pFaseSortData[i];pFaseSortData[i] = pFaseSortData[j];pFaseSortData[j] = nTemp;}//拿第i个元素和和第j个元素比较,若小,则增加i,然后再和j元素比较,若大,则互换位置。while( i < j && pFaseSortData[i] < pFaseSortData[j] )i++;if( i < j ){ int nTemp = pFaseSortData[i];pFaseSortData[i] = pFaseSortData[j];pFaseSortData[j] = nTemp;}}//因为上边i==j才跳出,所以在此快排时,需要用0到i,i+1( 代码中(j+1)==(i+1) )到最后才快排了if( i - nStartIndex > 1 )quickSort( pFaseSortData, 0, i );//递归调用,把key前面的完成排序if( nEndIndex - j > 1 )quickSort( pFaseSortData, j + 1, nEndIndex );//递归调用,把key后面的完成排序return 0;}
- 八大排序算法及完整c代码—快速排序
- 编程算法 - 快速排序算法 代码(C)
- 排序算法—快速排序
- 排序算法—快速排序
- 快速排序算法C,JAVA代码
- C语言快速排序算法代码分析
- C语言快速排序算法及代码
- 排序算法C++代码——快速排序
- 《C算法》——快速排序
- 算法—快速排序Sqrt (C语言)
- 快速排序算法代码
- 排序算法 - 快速排序(C++)
- 快速排序 C代码
- C++快速排序算法
- 快速排序算法 C
- C快速排序算法
- C快速排序算法
- 八大排序算法及完整c代码—冒泡排序
- windows 7 多国语言包官方下载资源共享(32/64位)
- 高通芯片待机问题
- 请认清ubuntu的apt-get命令(肤浅版)
- 高并发的epoll+线程池,epoll在线程池内
- shell 编程中使用到得if语句内判断参数
- 排序算法C++代码——快速排序
- Linux命令pkg-config
- 【分享】百度百科500万词条
- 关于vc变量定义顺序猜测
- MVN 构建项目时的一个问题--Could not resolve de pendencies for projec
- mvc3 创建项目
- 用C++\CLI包装普通类
- Android 如何添加一个apk使模拟器和真机都编译进去
- android百度地图开发測試时只出现网格