|
|
|
@ -0,0 +1,21 @@
|
|
|
|
|
//选择法排序
|
|
|
|
|
void Sort(int a[], int n)
|
|
|
|
|
{
|
|
|
|
|
int i, j, k, temp;
|
|
|
|
|
for(i = 0; i < n - 1; i ++)
|
|
|
|
|
{
|
|
|
|
|
k = i;
|
|
|
|
|
for(j = i + 1; j < n; j ++)
|
|
|
|
|
{
|
|
|
|
|
if(a[j] < a[i])//a[j] > a[i]是升序, a[j] < a[i]是降序
|
|
|
|
|
k = j //记录最小(大)数 下标位置
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(k != i)
|
|
|
|
|
{
|
|
|
|
|
trmp = a[k];
|
|
|
|
|
a[k] = a[i];
|
|
|
|
|
a[i] = temp;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//复杂度说明:从代码中可以看出一共遍历了n + n-1 + n-2 + … + 2 + 1 = n * (n+1) / 2 = 0.5 * n ^ 2 + 0.5 * n,那么时间复杂度是O(N^2)。
|