白天有事,趕緊起牀打一下豆豆。
不多說了,選擇排序。
//選擇排序 2013/09/07
//從小到大
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <malloc.h>
//從前往後,每次將最小的放到前面
void selectSort(int* a, int n){
int i,j,min;
for ( i = 0 ; i < n ; i++){
min = a[i];
for ( j = i ; j < n ; j++ ){
if( a[j] < min){
a[i] = a[j];
a[j] = min;
min = a[i];
}
}
}
}
//從後往前,每次將最大的放到後面
void selectSort2(int* a, int n){
int i,j,max;
for ( i = n - 1 ; i >= 0 ; i--){
max = a[i];
for ( j = i ; j >= 0 ; j-- ){
if( a[j] > max){
a[i] = a[j];
a[j] = max;
max = a[i];
}
}
}
}
void initArr(int* a, int n){
int i;
srand(time(NULL));
for(i = 0; i < n; i++){
a[i] = rand()%100;
}
}
void printArr(int* a, int n){
int i;
for (i = 0;i < n; i++){
printf("%d ",a[i]);
}
printf("\n");
}
void main(){
int* arr;
int n;
printf("Input the size of array:");
scanf("%d",&n);
arr = (int *)malloc(n*sizeof(int));
initArr(arr,n);
printArr(arr,n);
selectSort2(arr,n);
printArr(arr,n);
}