关于QuickSort
请看下面的一段代码:
template <class T>
void QuickSort( T data[], int n ){
int i, max;
if ( n < 2 ) return;
//find the largest element and put it at the end of data[]
for ( int i = 1, max = 0; i < n; i++ ){//??WHY
if ( data[max] < data[i] ) max = i;
}
exch ( data[n-1], data[max] );
QuickSort( data, 0, n-2 );
}
我的问题是:
为什么要用这一段,效率上有很大作用吗?
for ( int i = 1, max = 0; i < n; i++ ){//??WHY
if ( data[max] < data[i] ) max = i;
}
exch ( data[n-1], data[max] );
[解决办法]
这段用的不是快速排序算法. 应该是沉底/冒泡算法
[解决办法]
交换排序。
有什么作用?你把那两行删掉就是了。
[解决办法]
删掉以后看输出结果。如果你电脑上装有编译器的话。
[解决办法]
分明是bubblesort,为什么还要来个递归呢?画蛇添足。。。
[解决办法]
看来大家对几种基本排序算法不是很熟……