赞
踩
采用分治的思想,基于一个数作为标准,进行分治
步骤:
void quick_sort(int q[], int l, int r)
{
if(r <= l) return;
//两个指针i、j
int i = l - 1, j = r + 1, x = q[(i+j)/2];
while(i < j)
{
do i++; while( q[i] < x );
do j--; while( q[j] > x );
if( i < j ) swap( q[i] ,q[j] );
}
quick_sort( q, l, j );
quick_sort( q, j + 1, r );
}
采用分治的思想,步骤:
using naamespace std; const int N = 100010; int q[N], temp[N];//需要额外的储存空间 void merge_sort(int q[], int l, int r) { if(r <= l) return; //递归排序 int mid = (l + r) / 2; merge_sort(q, l, mid); merge_sort(q, mid+1, r); //归并 int i = l, j = mid+1; int k = 0;//结果数组的下标 while(i <= mid && j <= r) { if(q[i] <= q[j]) temp[k++] = q[i++]; else temp[k++] = q[j++]; } while(i <= mid) temp[k++] = q[i++]; while(j <= r) temp[k++] = q[j++]; //copy for(i = 0,j = l; j <= r; i++,j++) q[j] = temp[i]; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。