交互设计算法基础(7)- Straight Selection Sort

基本思想:在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。

  算法流程
  1)初始时,数组全为无序区a[0, ... , n-1], 令i=0;
  2)在无序区a[i, ... , n-1]中选取一个最小的元素与a[i]交换,交换之后a[0, ... , i]即为有序区;
  3)重复2),直到i=n-1,排序完成。

  时间复杂度分析:O(n^2),直接选择排序一种不稳定的排序算法。

void StraightSelectionSort(int a[], int n) {
  int i, j, minIndex;
  for (i=0; i<n; i++) {
    minIndex=i;
    for (j=i+1; j<n; j++) {
      if (a[j]<a[minIndex]) {
        minIndex=j;
      }
      int temp = a[j];
      a[j] = a[minIndex];
      a[minIndex] = temp;
    }
  }
}

猜你喜欢

转载自www.cnblogs.com/x5115x/p/12637834.html