C语言选择排序 | Eternal_zttz

C语言选择排序

选择排序是基本排序算法之一,其基本思路为:

  1. 初始时选择整个序列中最小的一个,将其放在序列开头,此时其便为已排序序列(只有一个元素)
  2. 从剩余为排序序列中,选择最小的一个,将其放在已排序序列的末尾
  3. 重复 2 过程,直到所有的元素都在已排序序列中

算法时间复杂度为O(n^2).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#define SWAP(a,b) {int t = a;a =b;b =t;}//利用宏定义来定义交换过程,简化代码
void selectSort(int a[],int n);
int main(){
int i,n;
scanf("%d",&n);
int num[n];
for (i =0 ;i<n;i++)
scanf("%d",&num[i]);
selectSort(num,n);
for (i =0;i<n;i++)
printf("%d ",num[i]);
}
void selectSort(int a[],int n){
int i =0,j =0;
int min = 0;
for ( i =0 ;i<n;i++){
min = i;//将最小值标记为i
for (j = i+1;j<n;j++)
if(a[j]<a [min])//在i后寻找最小值
min = j;
SWAP(a[i],a[min]);//交换i与最小值
}
}

程序输入:

1
2
9
1 5 6 8 4 3 2 9 15

程序输出:

1
1 2 3 4 5 6 8 9 15


-------------The End-------------