【C语言冒泡排序、选择排序和快速排序】


前言

本文简单介绍了C语言的冒泡排序、选择排序、快速排序,结合本人的理解与使用做一下记录。


一、冒泡排序

思想:(以小到大排序为例)假设一个数组有n个数,第一轮遍历这个数组的前(n-1)个数,遍历的时候比较当前位置和下一个位置的数,如果当前位置的数比较大,就跟下一个数交换位置;所以第一轮结束之后,就会把最大的数“沉”到数组的末尾位置;第二轮遍历这个数组的前(n-2)个数,按照前面的方法把第二大的数“沉”到数组的倒数第二个位置;依此类推,(n-1)轮之后每一个较大的数都按顺序沉到了数组的相应位置。

二、选择排序

思想:使用for循环对数组进行排序;每循环一次,选择出一个较大的数,然后与
数组中的第n个位置交换数据,n从0开始。假设这个数组有n个数据,那么循环(n-1)次即可完成排序。

三、 快速排序

思想:

  1. 首先确定一个target,找到这个target在数组中的位置;它会把这个数组分割成两部分(你可以认为是两个待排序的区域),并且左边的数都比它小,右边的数都比它大;
  2. 这两个区域都设置了新的target,然后通过递归确定左边这个区域的新target的位置和右边这个区域的新target的位置;继续分割继续递归直到区域的数据只有一个为止;
  3. 最终可以实现数组中的每一个数据的左边的数都比它小且右边的数都比它大,从而完成排序。

四、代码设计与实现

代码设计

编写一个程序,随机生成10个整数并赋值给数组;然后分别使用冒泡排序、选择排序和快速排序对这个数组进行排序并打印出排序后的结果。

代码实现

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>


void BubbleSort(int *a, int length) ;
void select_sort(int *array, int size);
void quick_sort(int *array, int low, int high);

#define SIZE 10
//#define SELECT_SORT
//#define BUBBLE_SORT
#define QUICK_SORT

int main(void)
{
   
	int array[SIZE];
	int i;
	
	srand(time(0));	//设置随机数种子
	//使用随机数初始化数组
	for(i = 0; i < SIZE; i++)
	{
   
		array[i] = rand() % (50-3+1)+3;	//生成[3,50]范围内的随机整数
	}
	
	printf("排序之前,数组为:");
	for(i = 0; i < SIZE; i
  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值