天天看點

資料結構:選擇排序

基本思想:
每一趟 (例如第 i 趟,i= 0, 1, …, , , n-2) 
在後面 n-i個待排的資料元素中選出關鍵字
最小的元素,  作為有序元素序列的第 i個元
素      

SelectionSort.c

#include <stdio.h>


void println(int *array,int len)
{
  int i=0;
  
  for(i=0;i<len;i++)
  {
    printf("%d ",array[i]);
  }
  
  printf("\n");
}

void swap(int *array,int i,int j)
{
  int temp = array[i];
  
  array[i] = array[j];
  
  array[j] = temp;
}

void SelectionSort(int *array,int len)
{
  int i = 0;
  int j = 0;
  int k = -1;
  
  for(i=0;i<len;i++)
  {
    k = i;
    
    for(j=i;j<len;j++)
    {
      if(array[j]<array[k])
      {
        k = j;
      }
    }
    
    swap(array,i,k);
  }
}

int main()
{
  int array[] = {21,25,49,25,16,8};
  int len = sizeof(array)/sizeof(*array);
  
  println(array,len);
  
  SelectionSort(array,len);
  
  println(array,len);
  
  return 0;
}      

繼續閱讀