问题4.2:算法分析-选择排序(续)
?
有许多经典的算法用来对数据进行排序,如选择排序(selection sort)、插入排序(insertion sort)和快速排序(quick sort)等。有关排序算法及分析主要在《数据结构》课程中讲授。
在问题4.2中将使用选择排序算法对学生成绩进行排序。
?
问题4.2:算法分析-选择排序(续)
?
选择排序的核心思想是先通过找到数组中未排序部分的最大元素,然后将其移到未排序部分的最前端来排序一个数组(从大至小排序)。即首先在整个数组中查找最大元素,将其换到第一个位置;然后从数组中第二个元素开始查找最大元素,以此类推。下面以图示来说明:
问题4.2:算法分析-选择排序(续)最大元素交换0123456716302472562455未排序896550最大元素交换0123653024745672562455未排序0123656224745672530455891650891650index = 0;问题4.2:算法分析-选择排序(续)for(i=0; i void sortArray(int array[], int n){ int i,j,tmp, index;for(i=0; i for (j=i; j if(array[index] < array[j])index = j;tmp = array[i]; array[i] = array[index];array[index] = tmp;}} 找最大元素 将最大元素移到未排 序部分的头部