选择排序
遍历数据,不交换位置,只查询数据中的最小值(最大值),然后依次排序
排序方法 | 平均情况 | 最好情况 | 最坏情况 | 辅助空间 | 稳定性 |
---|---|---|---|---|---|
冒泡排序 | O(n²) | O(n²) | O(n²) | O(1) | 不稳定 |
qt代码
#include "widget.h"
#include <QApplication>
#include <QtDebug>
void printArry();
int arry[10] = {9,1,5,8,3,7,6,0,2,4};
void dataSort(int *pArry,int len)
{
//选择排序
for(int i = 0; i < len-1; i++)
{
int min = i;
for(int j = i; j < len -1; j++)
{
if(pArry[j+1] < pArry[min])
{
min = j+1;
}
}
if(min != i)
{
int temp = pArry[i];
pArry[i] = pArry[min];
pArry[min] = temp;
}
printArry();
}
}
void printArry()
{
QString str;
for(int i = 0; i < sizeof(arry)/sizeof(int); i++ )
{
str += QString::number(arry[i]) + " ";
}
qDebug() << str;
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
printArry();
dataSort(arry,10);
return 0;
}
输出结果:
数据:
"9 1 5 8 3 7 6 0 2 4 "
排序过程:
"0 1 5 8 3 7 6 9 2 4 "
"0 1 5 8 3 7 6 9 2 4 "
"0 1 2 8 3 7 6 9 5 4 "
"0 1 2 3 8 7 6 9 5 4 "
"0 1 2 3 4 7 6 9 5 8 "
"0 1 2 3 4 5 6 9 7 8 "
"0 1 2 3 4 5 6 9 7 8 "
"0 1 2 3 4 5 6 7 9 8 "
"0 1 2 3 4 5 6 7 8 9 "
参考:http://www.cnblogs.com/eniac12/p/5329396.html#s1