利用c语言函数实现冒泡与选择排序

关于利用c语言函数实现冒泡与选择排序

一直以来排序都是c语言入门者的重点学习对象,冒泡与选择无疑是经典中的经典。单独去写排序我想并不如何困难,但是想要利用函数似乎并不是很容易。涉及到函数传递的问题从来就没有简单过,有时候即使编译器并没有报错但是在执行的过程中并没有实现排序的功能。
以下的代码是最经典的排序代码,并没有利用指针,也没有将交换的部分单独开来再写一个函数。目的是为了方便初学者去理解掌握,原理的话没有详细解释是太多的参考书都有讲不必赘述了,希望大家记住的不是代码而是原理。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#define N 5
void compare1(int a[]);
void compare2(int a[]);
void main()
{int a[N], i;	
printf("请输入N个整型变量\n");
for (i = 0; i < N; i++)
{scanf("%d", &a[i]);}	
compare1(a);	
printf("N个数按照从小到大排序后的结果为\n");	
for (i = 0; i < N; i++)		
printf("%d", a[i]);	
compare2(a);	
printf("N个数按照从小到大排序后的结果为\n");	
for (i = 0; i < N; i++)		
printf("%d", a[i]);}
void compare1(int a[])
{int i, j, temp;	
for (i = 0; i < N - 1; i++)      
//外循环控制比较趟数	
{		for (j = 0; j < N - 1 - i; j++)    
//内循环控制两两比较,使得大数沉底		
{			if (a[j] > a[j + 1])			
{temp = a[j];				         
a[j] = a[j + 1];				
a[j + 1] = temp;			}		
}	
}
void compare2(int a[])
{	int i, j, temp;	
for (i = 0; i < N - 1; i++)        
 //外循环控制比较趟数	
 {		
       for (j = i + 1; j <= N - 1; j++)   
 //内循环控制两两比较,使得小数前移		
               {if (a[i] > a[j])			{				   temp = a[i];
a[i] = a[j];				
a[j] = temp;			
               }		
 }	
 }
 }

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值