排序算法篇一之冒泡排序,选择排序,快速排序

前言:根据评论区小伙伴要求,我这期出了一篇排序的内容,还有其他很多种排序比如哈希排序啊等等在后面会陆续给大家介绍的,希望大家熟练掌握每一种排序,一口气吃不成一个大胖子。

1 冒泡排序(这里就走个过程,把函数调用用上,因为前面讲过了,不过多赘述,用到了一点点指针的内容)

void Bubblesort(int arr[], int sz)
{
	for (int i = 0; i < sz; i++)
	{
		for (int j = 0; j < sz - 1 - i; j++)
		{
			if (arr[j] < arr[j + 1])
			{
				int tmp = arr[j + 1];
				arr[j + 1] = arr[j];
				arr[j] = tmp;
			}
		}
	}
}
void Printarray(int* p, int sz)
{
	for (int i = 0; i < sz; i++)
	{
		printf("%d ", *p);
		p++;
	}
}
int main()
{
	int arr[10] = { 3,5,2,6,0,9,8,1,4,7 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	Bubblesort(arr, sz);
	Printarray(arr, sz);
}

2 选择排序

方法:

第一步:从第一个数开始选最大(或者最小的数)放在第一个

第二步:从第二个数开始选最大的数,放在第二的位置。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//降序排列
void Choosesort(int arr[], int sz)
{
	int j = 0;
	int max = 0;
	for (int i = 0; i < sz; i++)
	{
		for (j = i; j < sz; j++)
		{
			max = arr[i];
			if (max < arr[j])
			{
				int tmp = 0;
				arr[i] = arr[j];
				arr[j] = max;
			}
		}
	}
}
void Printarray(int* p, int sz)
{
	for (int i = 0; i < sz; i++)
	{
		printf("%d ", *p);
		p++;
	}
}
int main()
{
	int arr[10] = { 3,5,2,6,0,9,8,1,4,7 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	Choosesort(arr, sz);
	Printarray(arr, sz);
}

3 快速排序 (这里我给大家看看qsort函数定义)

#include<stdlib.h>
void Printarray(int* p, int sz)
{
	for (int i = 0; i < sz; i++)
	{
		printf("%d ", *p);
		p++;
	}
}
int (*Quckilysort)(const void* a,const void* b)
{
	return (*(int*)a - *(int*)b);//这里默认是升序排列
}
int main()
{
	//随便搞个乱序数组,你想怎么设置就怎么设置
	int arr[10] = {9,2,4,5,23,46,53,67,76,75};
	size_t num = sizeof(arr) / sizeof(arr[0]);//数组元素个数
	size_t size = sizeof(arr[0]);//一个元素字节大小
	//这里用到了一个知识点,函数名就是地址,地址就是指针
	qsort(arr, num, size, Quckilysort);
	Printarray(arr, num);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/2301_79811170/article/details/134300740
今日推荐