概述
第一:冒泡
#include<stdio.h>
//冒泡排序
void swap (int *a, int *b) //交换
{
int tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
void print_array(int *v ,int len) //打印
{
int i;
for( i = 0; i < len ; i++)
{
printf("%d ",v[i]);
}
printf("n");
}
void bubble_sort(int *v , int len)
{
int i;
int j;
int times = 0;
for (i = 0; i < len-1; i++)
{
for(j = 0; j < len -1 -i; j++)
{
if(v[j] > v [j+1])
{
swap(v+j, v+j+1); //swap(&v[j],&v[j+1])
}
times ++;
}
print_array(v, len);
}
printf("%dn",times);
}
int main()
{
int a[] = {5,4,3,2,1};
int len = sizeof(a)/sizeof(a[0]);
print_array(a,len);
bubble_sort(a,len);
printf("**");
print_array(a,len);
return 0;
}
第二:选择
#include<stdio.h>
//冒泡排序
void swap (int *a, int *b) //交换
{
int tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
void print_array(int *v ,int len) //打印
{
int i;
for( i = 0; i < len ; i++)
{
printf("%d ",v[i]);
}
printf("n");
}
void bubble_sort(int *v , int len)
{
int i;
int j;
int times = 0;
for (i = 0; i < len-1; i++)
{
for(j = 0; j < len -1 -i; j++)
{
if(v[j] > v [j+1])
{
swap(v+j, v+j+1); //swap(&v[j],&v[j+1])
}
times ++;
}
print_array(v, len);
}
printf("%dn",times);
}
void select_sort(int *v,int len) //选择排序
{
int max_value; //最大值
int max_pos; //位置
int i,j;
for(i = 0; i < len-1; i++) //外层循环
{
max_value = v[0];
max_pos = 0;
for(j = 0; j < len - i; j++)
{
if(v[j] > max_value)
{
max_value = v[j];
max_pos = j;
}
}
swap(v + max_pos, v + len - i - 1);
print_array(v,len);
}
}
int main()
{
int a[] = {52,44,3,23,15,32};
int len = sizeof(a)/sizeof(a[0]);
print_array(a,len);
select_sort(a,len);
print_array(a,len);
return 0;
}
第三 :插入排序
#include<stdio.h>
//冒泡排序
void swap (int *a, int *b) //交换
{
int tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
void print_array(int *v ,int len) //打印
{
int i;
for( i = 0; i < len ; i++)
{
printf("%d ",v[i]);
}
printf("n");
}
void bubble_sort(int *v , int len) //冒泡排序
{
int i;
int j;
int times = 0;
for (i = 0; i < len-1; i++)
{
for(j = 0; j < len -1 -i; j++)
{
if(v[j] > v [j+1])
{
swap(v+j, v+j+1); //swap(&v[j],&v[j+1])
}
times ++;
}
print_array(v, len);
}
printf("%dn",times);
}
void select_sort(int *v,int len) //选择排序
{
int max_value; //最大值
int max_pos; //位置
int i,j;
for(i = 0; i < len-1; i++) //外层循环
{
max_value = v[0];
max_pos = 0;
for(j = 0; j < len - i; j++)
{
if(v[j] > max_value)
{
max_value = v[j];
max_pos = j;
}
}
swap(v + max_pos, v + len - i - 1);
print_array(v,len);
}
}
void insert_sort(int *v, int len) // 插入排序
{
int i,j;
int value;
for(i = 1 ; i < len ; i ++)
{
value = v[i];
for(j = i ; j > 0 && value < v[j-1] ; j--)
{
v[j] = v[j -1];
}
v[j] = value;
print_array(v, len);
}
}
void insert_sort2(int *v, int len) // 插入排序
{
int i,j;
int value;
for(i = 1 ; i < len ; i ++)
{
value = v[i];
for(j = i ; j > 0 ; j--)
{
if(value > v[j - 1])
{
break;
}
v[j] = v[j -1];
}
v[j] = value;
print_array(v, len);
}
}
int main()
{
int a[] = {52,44,3,23,1,15,32};
int len = sizeof(a)/sizeof(a[0]);
print_array(a,len);
insert_sort2(a,len);
print_array(a,len);
return 0;
}
最后
以上就是纯情寒风为你收集整理的C语言 排序 冒泡 选择第一:冒泡第二:选择第三 :插入排序的全部内容,希望文章能够帮你解决C语言 排序 冒泡 选择第一:冒泡第二:选择第三 :插入排序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复