选择排序法
原理:
选择法循环过程与冒泡法一致,它还定义了记号min=i,然后依次把a[min]同后面的元素比较,若a[min]>a[j],则使k=j. 最后看看k=i是否还成立,不成立则交换a[k], a[i],这样就比冒泡法省下许多无用的交换,提高了效率。
void choise (int *a, int n) /*选择排序函数*/
{int i, j, min, temp;for (i = 0; i <= n; i++){min = i; //给记号赋值for (j = i+1; j < n; j++){if (a[min] > a[j])min = j;//min总是指向最小元素}if (i != min) //当min!=i才交换,否则a[i]即为最小{temp = a[i];a[i] = a[min];a[min] = temp;}}
}
附上输出函数和主函数
void print(int *a, int n)
{int i;for (i = 0; i < n; i++)printf ("%5d", a[i]);printf ("\n");
}
int main()
{int a2[] = {13,0,5,8,1,7,21,50,9,2};printf("according to choise:"); choise(a2,10);print(a2, 10);return 0;
}