博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
O(nLogn)排序 :快速
阅读量:4092 次
发布时间:2019-05-25

本文共 4982 字,大约阅读时间需要 16 分钟。

#include 
using namespace std;void printArray(int *arr, int size){
for(int i=0; i
= pivot ) {
high--; } array[low] = array[high]; // printArray(array, 7); } array[low] = pivot; // cout<<"pos:"<
<
= high) return ; int pos = partition(array, high, low); qsort_c(array, high, pos+1); qsort_c(array, pos-1, low);}void quick_sort(int array[], int size){
qsort_c(array, size-1, 0);}int main(){
int array[7] = {
10, -22, 211, 120, -2, 23, 120}; int size = sizeof (array) / sizeof (*array); printArray(array, size); // partition(array, size-1, 0); quick_sort(array, size); printArray(array, size); return 0;}

#include 
using namespace std;void PutArray(int *array, int size) {
// cout << " Array:"; for (int i = 0; i < size; ++i) {
cout << array[i] << " "; } cout << endl;}int partition(int *array, int high, int low) {
int pivot = array[low]; while (low < high) {
/* * * 1、low
<< "low:" << low << "high:" << high; PutArray(array, 7);#endif while ((low < high) && pivot >= array[low]) low++; swap(array[low], array[high]);#if 0 cout << "==>:" << "low:" << low << "high:" << high; PutArray(array, 7);#endif }// cout << "pos:" << low << endl; return low;}void QSort(int array[], int high, int low) {
if (low < high) {
int pos = partition(array, high, low); QSort(array, pos - 1, low); QSort(array, high, pos + 1); }}void QuickSort(int array[], int size) {
QSort(array, size - 1, 0);}int main() {
int array[7] = {
23, -22, 241, 23, 640, 0, 50}; // int array[2] = {23, -22}; int size = sizeof(array) / sizeof(*array); PutArray(array, size); // InsertionSort(array, size); // ShellSort(array, size); // QuickSort_2(array, size); // partition(array, size, 0); QuickSort(array, size); PutArray(array, size); return 0;}

void QuickSort_2(int array[], int size) {
int lower_list_len = 0; int pivot = array[size - 1]; if (size <= 1) {
return; } for (int i = 0; i < size; ++i) {
if (array[i] < pivot) {
swap(array[i], array[lower_list_len]); lower_list_len++; } } // cout << "low:" << lower_list_len << endl; int high_list_len = size - lower_list_len - 1; array[size - 1] = array[lower_list_len]; array[lower_list_len] = pivot; // cout << "high_list_len:" << high_list_len << endl; QuickSort_2(array, lower_list_len); QuickSort_2(&array[lower_list_len + 1], high_list_len);}
#include 
#include
#include
#include
#include
using namespace std;auto put = [](vector
&array){ std::copy(array.begin(), array.end(), ostream_iterator
(cout , " ")); std::cout << std::endl;};int partition_1(vector
&v, int head, int tail){ int pivot = v.at(head); int i = head + 1; int j = head; for (;i<=tail;i++) { if(v.at(i) < pivot) { std::swap(v.at(i),v.at(++j)); } } std::swap(v.at(head),v.at(j)); return j;}int partition_2(vector
&v, int head, int tail){ int pivot = v.at(head); int i = head + 1; int j = tail; for (;i <= j;) { while (i <= j && v.at(j) >= pivot) j--; while (i <= j && v.at(i) <= pivot) i++; if(i <= j) { std::swap(v.at(i),v.at(j)); } } cout << head << ":"; std::swap(v.at(head),v.at(j)); put(v); return j;}int partition(vector
&array, int low, int high){ int pivot = array[high]; while (low < high) { while (low < high && array[low] <= pivot ) { low++; } array[high] = array[low]; // printArray(array, 7); while (low < high && array[high] >= pivot ) { high--; } array[low] = array[high]; // printArray(array, 7); } array[low] = pivot; // cout<<"pos:"<
<
&v, int head, int tail){ if(head > tail) return ; int piovt = partition(v, head, tail); qSort(v, head, piovt - 1); qSort(v, piovt + 1, tail);}int main(int argc, char *argv[]){ int a[] = { 1, 12, 3, 44, -5}; int s = sizeof(a) / sizeof(int); vector
array(a, a + s); qSort(array, 0, array.size()-1); put(array); return 0;}#if 0int main(int argc, char *argv[]){ QCoreApplication core(argc, argv); //for(int i=0; i<) int a[] = { 1, 12, 3, 44, -5}; int s = sizeof(a) / sizeof(int); vector
array(a, a + s); auto put = [](vector
&array){ std::copy(array.begin(), array.end(), ostream_iterator
(cout , " ")); std::cout << std::endl; }; //std::copy(array.begin(), array.end(), ostream_iterator
(cout , " ")); int size = array.size() - 1; int flag = true; for (size_t i = 0; flag ; i++) { flag = false; for (size_t j = size; j > i; j--) { if (array[j] < array[j-1]) { std::swap(array[j], array[j-1]); flag = true; } } cout << "i:" << i << " "; put(array); } put(array); return core.exec();}#endif

转载地址:http://ghcii.baihongyu.com/

你可能感兴趣的文章
实现接口创建线程
查看>>
Java对象序列化与反序列化(1)
查看>>
HTML5的表单验证实例
查看>>
JavaScript入门笔记:全选功能的实现
查看>>
程序设计方法概述:从面相对象到面向功能到面向对象
查看>>
数据库事务
查看>>
JavaScript基础1:JavaScript 错误 - Throw、Try 和 Catch
查看>>
SQL基础总结——20150730
查看>>
SQL join
查看>>
JavaScript实现页面无刷新让时间走动
查看>>
CSS实例:Tab选项卡效果
查看>>
前端设计之特效表单
查看>>
前端设计之CSS布局:上中下三栏自适应高度CSS布局
查看>>
Java的时间操作玩法实例若干
查看>>
JavaScript:时间日期格式验证大全
查看>>
pinyin4j:拼音与汉字的转换实例
查看>>
XML工具代码:SAX从String字符串XML内获取指定节点或属性的值
查看>>
时间日期:获取两个日期相差几天
查看>>
责任链模式 Chain of Responsibility
查看>>
高并发与大数据解决方案概述
查看>>