蛮力法求解简单选择排序
在排序的过程中,将数组分为有序区和无序区,每轮循环将无序区的最小元素挑选出来放置在无序区的最前端,即将该元素加到有序区的最后端,这样即完成了有序区的扩大和无序区的缩小,排序至最后所有的元素有序。
void SelectSort(int a[], int n)
{
int i, j, k;
for (i = 0; i < n - 1; i++)
{
k = i;
for (j = i + 1; j < n; j++)//寻找无序区的最小元素
{
if (a[j] < a[k])
k = j;//保存最小元素的下标
}
if (k != i)
swap(a[k], a[i]);
}
}
蛮力法求解冒泡排序
void BubbleSort(int a[], int n)
{
int i, j, tmp;
bool exchange;
for (i = 0; i < n - 1; i++)
{
exchange = false;
for (j = n - 1; j > i; j--)//寻找无序区的最小元素
{
if (a[j] < a[j - 1])
{
swap(a[j], a[j - 1]);
exchange = true;
}
}
if (exchange == false)//未发生交换,数组已经有序
break;
}
}