sort算法的原理?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sort算法的原理?相关的知识,希望对你有一定的参考价值。

sort算法最后一个参数必须是返回值为true或false的函数?
怎么解释降序排序时的 return num1>num2 ?num1和num2分别代表什么?

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

template <class T>
class Print

public:
void operator() (const T &t)

cout<<t<<" ";

;

bool BigNumber(int num1,int num2)

return num1>num2;


int main()

Print<int> DoPrint;
vector<int> theArray(10);
int i=0;
for(i=0;i<10;i++)
theArray[i]=i;
//for_each(theArray.begin(),theArray.end(),i++); 此行错误
for_each(theArray.begin(),theArray.end(),DoPrint);
cout<<endl;

sort(theArray.begin(),theArray.end());
for_each(theArray.begin(),theArray.end(),DoPrint);
cout<<endl;

sort(theArray.begin(),theArray.end(),BigNumber);
for_each(theArray.begin(),theArray.end(),DoPrint);
cout<<endl;

return 0;

交换两个数的值,哪两个数?
相邻的前后两个数?

void qsort( void *base,size_t num,size_t width,int (__cdecl *compare )(const void *elem1, const void *elem2 ) );

其中base为起始地址,num为元素个数,
width为每个元素所占内存数,compare( (void *) elem1, (void *) elem2 )自定义比较规则.

最后一个参数的返回值是int型的,num1和num2表示你当前比较的两个元素,根据返回值来决定是否交换num1和num2的位置.

一串数字排序,无论什么算法,每一次比较都是拿出其中的两个数比较,交换,这两个数在这里就是num1和num2.num1和num2是不断在变的,不是固定的.

比如:
for ( i = 0; i < n - 1; ++i )
for ( j = i + 1; j < n; ++j )
if ( a[i] < a[j] )
temp = a[i];
a[i] = a[j];
a[j] = temp;

在这里,每次比较时,num1和num2为a[i]和a[j]。
参考技术A void qsort( void *base,size_t num,size_t width,int (__cdecl *compare )(const void *elem1, const void *elem2 ) );

其中base为起始地址,num为元素个数,
width为每个元素所占内存数,compare( (void *) elem1, (void *) elem2 )自定义比较规则.

最后一个参数的返回值是int型的,num1和num2表示你当前比较的两个元素,根据返回值来决定是否交换num1和num2的位置.

一串数字排序,无论什么算法,每一次比较都是拿出其中的两个数比较,交换,这两个数在这里就是num1和num2.num1和num2是不断在变的,不是固定的.

比如:
for ( i = 0; i < n - 1; ++i )
for ( j = i + 1; j < n; ++j )
if ( a[i] < a[j] )
temp = a[i];
a[i] = a[j];
a[j] = temp;

在这里,每次比较时,num1和num2为a[i]和a[j]。
参考技术B num1和num2 代表数组里的2个元素,返回值 num1>num2 是真是假,是真sort则作2个元素的交换。

以上是关于sort算法的原理?的主要内容,如果未能解决你的问题,请参考以下文章

交换排序—冒泡排序(Bubble Sort)算法原理以及Java实现

js sort原理

史上最易理解的快速排序原理详解以及Arrays.sort方法

深入理解快速排序和 STL 的 sort 算法

插入排序的具体实现及其原理

选择排序的具体实现及其原理