(二)The example:{88,7,87,9,80,100,800,10,5}
(三)每回合變化
優點:
適合用在大型記錄之sorting,因為每回和頂多Swap 1次
程式碼
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int main (void)
{
int k;
int a[] = {88,7,87,9,80,100,800,10,5}; //You change the data what you want to sort
int array_size = sizeof(a)/sizeof(int);
printf("start selection sort\n");
SelectionSort(a,array_size);
printf("Ans is:");
for(k = 0; k<array_size;k++) //print the result
printf("%d ",a[k]);
}
void SelectionSort(int data[],int array_size)
{
int i,j,minmum,q;
int counta = 0;
bool f;
for(i=0; i< (array_size-1); i++) //execute the n-1 times
{
minmum = i;
for(j=i+1;j<array_size;j++) //找出目前最小值在哪裡 {
if(data[j]<data[minmum])
minmum = j;
}
if(minmum != i )//如果和之前位置一樣就不用交換
Swap(&data[i],&data[minmum]);
/* // print the every pass
printf("pass%d ",i);
for(q=0;q<array_size;q++)
printf("%d ",data[q]);
printf("\n");*/
}
}
void Swap(int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
沒有留言:
張貼留言