选择排序
选择排序
选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²)
的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。
## 算法实现过程 1.
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。 2.
再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
3. 重复第二步,直到所有元素均排序完毕。 >
人类语言:😜从第一个开始依次比较后面所有位置的数据。每次确定一个位置的数据
### 图片演示 > 图片来自菜鸟教程。 > >
每次确定一位的数字。每次循环次数比上一次少一位 > 如果一个数组长度是5
长度记为 len > 则比较轮数就是
数组长度减一 记作 i = 0; i < len-1;
i++ > 后面位数据的位置记为 j = i+1 ; j <
len;j++ 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34//冒泡排序
int main()
{
int array[5]; //声明数组
int len = sizeof(array)/sizeof(array[0]);//计算数组的长度
int cnt;//定义交换变量
int i,j;//定义循环变量
for( i =0 ; i<len;i++){ //数组初始化
int a = rand() % 100 ;//随机数 0~100
array[i] = a;
}
for ( i = 0; i < len; i++)
{
printf("%d ",array[i]); // 输出原始数据
}
printf("\n");
for ( i = 0; i < len-1; i++){ //外侧的一个数据
for (j = i+1; j < len; j++){//后面的每一个位置的数据
if (array[i] > array[j]){
cnt = array[j];
array[j] = array[i];//交换数据
array[i] = cnt;
/* code */
}
}
}
for (int i = 0; i < len; i++)
{
printf("%d ",array[i]);
}
return 0;
}