《数据结构》这门课程不仅讲数据结构,更重要的是讲算法。数据的四种逻辑结构:线性结构、树形结构、图状结构、集合结构。
学习数据结构时候两种排序方法的C代码:
#include <stdio.h>
/*选择排序*/
/*从第一个数开始和后面的每一个数两两比较,将最小值放最前面*/
void select_sort(int a[],int n){
int temp,i,j,k;
for(i=0; i<n-1; ++i){ //n个数做从小到大排序
j=i; //i是数组角标,从0开始,到n-1结束
for(k=i+1; k<n; ++k){ //k代表a[i]后一个数组元素的角标
if(a[k]<a[i]){ //如果后一个数比前一个数小 执行 把后面的角标k赋值给临时变量j
j=k;
if(j!=i){ //如果 j的值已经被另外赋值k了,那么说明上面的条件比较成功,将两个数位置调换,小的放前面
temp = a[i];
a[i] = a[j];
a[j] = temp;//将两个数值进行交换位置
}
}
}
}
}
/*冒泡排序*/
/*相邻的两个数依次进行比较,每一次比较后,最大的数会排最后*/
void bubble_sort(int a[],int n){
int i,j,temp;
_Bool change = 1; //C语言后来才引入了布尔类型_Bool 其中1代表true,0代表flase
for(i = n-1,change=1; i>1 && change; --i){
change = 0;
for(j=0; j<i; ++j){
if(a[j]>a[j+1]){
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
change = 1;
}
}
}
}
/*主函数*/
void main(){
int a[8] = {9,3,6,4,5,1,4,4};
int b[6] = {5,9,4,8,2,6,};
select_sort(a,8);
bubble_sort(b,6);
int i;
for(i=0;i<8;i++){
printf("%d ",a[i]);
}
printf("\n");
int j;
for(j=0;j<6;j++){
printf("%d ",b[j]);
}
}