排序算法十大经典方法(选择排序算法)
排序算法十大经典方法(选择排序算法)
相信大家都听过一句话“学好数理化,走遍全天下”,华为创始人任正非先生同样也说过同样的话,公司要发展壮大,我们就要砸数学家、化学家、物理学家。那么今天要排序算法也是有关联。作为一个程序员来说编程的精髓在于算法,更确切地说是数学知识。要不然怎么说程序员是新时代“农民工”呢。就是大家所说的码农,写代码搬来搬去呢,我认为表达得非常的到位。所以说要想提升自己的技术水平,多了解些常见的算法知识很重要,包括好多大厂、小厂面试都是些必考的知识点。下面我们进入今天的主题选择排序。
选择排序(selection sort)也是一种比较常见的排序方法。它的基本思想是:第i趟排序从序列的后n-i 1(i=1 2 … n-1)个元素中选择一个最小的元素,与该n-i 1个元素的最前面那个元素进行位置交换,也就是与第i个位置上的元素进行交换,直到i=n-1。直观地讲,每一趟的选择排序就是从序列中未排好顺序的元素中选择一个最小的元素,将该元素与这些未排好顺序的元素的第一个元素交换位置。
源代码:
#include "stdio.h"
void selectsort(int k[] int n) /*选择排序*/
{
int i j max;
for(i=1;i<=n-1;i ){
max = i;
for(j=i 1;j<=n;j ) /*在后n-i 1个元素中找到最小的元素位置*/
if(k[j] > k[max])
max = j; /*用min记录下最小元素的位置*/
if(max != i){ /*如果最小的元素不位于后n-i 1个元素档第1个*/
k[0] = k[max] ;
k[max] = k[i]; /*元素的交换*/
k[i] = k[0];
}
}
}
main()
{
int i a[11] = {-111 2 5 6 3 7 8 0 9 12 1};
/*初始化序列,a[0]可任意置数*/
printf("The orginal data array is\n") ;
for(i=1;i<=10;i ) /*显示原序列之中的元素*/
printf("%d " a[i]);
selectsort(a 10); /*执行选择排序*/
printf("\nThe result of selection sorting for the array is\n");
for(i=1;i<=10;i )
printf("%d " a[i]); /*输出排序后的结果*/
getche();
}
运行结果: