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);
本文出自 “wait0804” 博客,请务必保留此出处http://wait0804.blog.51cto.com/11586096/1898654
原文地址:http://wait0804.blog.51cto.com/11586096/1898654