学习目标:
复习并掌握C语言三大排序算法:冒泡排序,选择排序,插入排序
学习内容:
三大排序算法:冒泡排序,选择排序,插入排序
学习时间:
下午3点-5点
学习产出:
冒泡排序
#include<stdio.h>
int arr[5]={0};
int len=0;
void arrinsert(int data)
{
arr[len]=data;
len++;
}
int main()
{
//冒泡排序 升序
arrinsert(4);
arrinsert(5);
arrinsert(3);
arrinsert(2);
arrinsert(1);
//插入数据
int i,j,temp;
for(i=0;i<len;i++)
{
for(j=0;j<len-i;j++)
{
if(arr[j]>arr[j+1])
{
temp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}
}
}
for(j=0;j<len;j++)
{
printf("%d\t",arr[j]);
}
return 0;
}
选择排序
#include<stdio.h>
int arr[5]={0};
int len=0;
void arrinsert(int data)
{
arr[len]=data;
len++;
}
int main()
{
//选择排序 升序
arrinsert(4);
arrinsert(3);
arrinsert(3);
arrinsert(2);
arrinsert(1);
//插入数据
int i,j=0,min=0,temp=0;//min最小数据下标 j用来比较 帮助min标记最小的数据
for(i=0;i<=len-1;i++)
{
min=i;
for(j=i;j<=len-1;j++)
{
if(arr[min]>arr[j])//min标记当前最小数据还要小的下标
{
min=j;
}
}
temp=arr[min];
arr[min]=arr[i];
arr[i]=temp;
}
for(i=0;i<=len-1;i++)
{
printf("%d\t",arr[i]);
}
return 0;
}
插入排序
#include<stdio.h>
int arr[5]={0};
int len=0;
void arrinsert(int data)
{
arr[len]=data;
len++;
}
int main()
{
//插入排序 升序
arrinsert(4);
arrinsert(3);
arrinsert(3);
arrinsert(2);
arrinsert(1);
//插入数据
int i=0,j=0,val=0;//val表示要被插入的数据
for(i=1;i<len;i++)//下标i表示要被插入的元素
{
val=arr[i];
j=i-1;//下标j表示插入数据前一个数据的下标
while(j>=0)
{
if(arr[i]<arr[j])
{
arr[i]=arr[j];
arr[j]=val;
i=j;
}
j--;
}
}
for(i=0;i<=len-1;i++)
{
printf("%d\t",arr[i]);
}
return 0;
}