c语言中冒泡排序算法(选择插入冒泡排序经典算法)
c语言中冒泡排序算法(选择插入冒泡排序经典算法)#include<stdlib.h>#include<time.h>纯属个人写法,跟网上其他人写的代码可能略有不同,但核心思路基本不变。*/#include<stdio.h>
/*
初学必须掌握的三种经典排序算法
选择排序/插入排序/冒泡排序
独立函数,传入参数调用即可实现对源数列进行排序。
纯属个人写法,跟网上其他人写的代码可能略有不同,但核心思路基本不变。
*/
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
//插入算法
void insort(int [] int);
//选择排序算法
void selsort(int [] int);
//冒泡排序算法
void bubsort(int [] int);
int main(int argc char** argv)
{
int arr[20]={0} len=20;
srand((unsigned)time(NULL));
for(int i=0;i<len;i )
{
arr[i]=rand()0 1;
printf("%-4d" arr[i]);
}
puts("\n\n");
// insort(arr len);
// selsort(arr len);
bubsort(arr len);
for(int i=0;i<len;i )
{
printf("%-4d" arr[i]);
}
puts("\n\n");
return 0;
}
void insort(int arr[] int len)
{
int i j temp;
for(i=1;i<len;i )
{
temp=arr[i];
for(j=i-1;j>=0;j--)
{
if(temp<arr[j])
{ //数数组元素右移,腾出位置
arr[j 1]=arr[j];
}
else
{
//continue(错误);
//找到位置退出当前层循环
break;
}
}
arr[j 1]=temp;
}
}
void selsort(int arr[] int len)
{
for(int i=0;i<len-1;i )
{
for(int j=i 1;j<len;j )
{
if(arr[i]>arr[j])
{
int temp;
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
}
void bubsort(int arr[] int len)
{
int n=len-1;
for(int i=0;i<n;i )
{
for(int j=0;j<n;j )
{
if(arr[j]>arr[j 1])
{
int temp;
temp=arr[j];
arr[j]=arr[j 1];
arr[j 1]=temp;
}
}
}
}