1、选择排序
(1)、算法思想:依次是下标为(0,1,2,....n)的数字和其后的所有数字进行比较,每一轮的比较结果:都先确定最前面的是最小的数字;
(2)、代码实现
#include<stdio.h>
void sort(int *a, int count);
void showArray(int *a, int count);
void showArray(int *a, int count){
int i;
for(i = 0; i < count; i++){
printf("%d ", a[i]);
}
printf("\n");
}
void sort(int *a, int count){
int i;
int j;
int tmp;
for(i = 0; i < count; i++){
for(j = i+1; j < count; j++){
if(a[i] > a[j]){
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
}
void main(void){
int a[] = {3 ,5 ,6, 1, 7, 2, 9, 8};
int count = sizeof(a)/sizeof(int);
sort(a, count);
showArray(a, count);
}
(3)、结果打印
(4)、算法分析
时间复杂度为:O(n^2);
2、交换(冒泡)排序
(1)、算法思想:相邻的2个数字,两两进行比较,每一轮的排序结果:最大的数字在最后面的位置;
(2)、代码实现
#include<stdio.h>
void swapSort(int *a, int count);
void showArray(int *a, int count);
void showArray(int *a, int count){
int i;
for(i = 0; i < count; i++){
printf("%d ", a[i]);
}
printf("\n");
}
void swapSort(int *a, int count){
int i;
int j;
int tmp;
for(i = 0; i < count; i++){
for(j = 0; j < count-i; j++){
if(a[j] > a[j+1]){ //将大的数字放在最后面
tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
}
}
}
}
void main(void){
int a[] = {3, 5, 7, 9, 1, 6, 10};
int count = sizeof(a)/sizeof(int);
swapSort(a, count);
showArray(a, count);
}
(3)、结果截图
(4)、算法分析
时间复杂度:O(n^2);
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。