目录
一、下面是快速排序原理的图解
1.1第一次快速排序
🦸🏼 🦸🏼♂️ 🦹🏼♀️ 🦹🏼 🦹🏼♂️ 🤶🏼 🧑🏼🎄 🎅🏼 🧙🏼♀️ 🧙🏼 🧙🏼♂️ 🧝🏼♀️ 🧝🏼 🧝🏼♂️ 🧛🏼♀️ 🧛🏼 🧛🏼♂️ 🧜🏼♀️ 🧜🏼 🧜🏼♂️ 🧚🏼♀️ 🧚🏼 🧚🏼♂️ 👼🏼 🤰🏼 🤱🏼 👩🏼🍼 🧙🏼 🧙🏼♂️ 🧝🏼♀️ 🧝🏼 🧝🏼♂️ 🧛🏼♀️ 🧛🏼 🧛🏼♂️ 🧜🏼♀️ 🧜🏼 🧜🏼♂️
1.2后续分支的快速排序
🦸🏼 🦸🏼♂️ 🦹🏼♀️ 🦹🏼 🦹🏼♂️ 🤶🏼 🧑🏼🎄 🎅🏼 🧙🏼♀️ 🧙🏼 🧙🏼♂️ 🧝🏼♀️ 🧝🏼 🧝🏼♂️ 🧛🏼♀️ 🧛🏼 🧛🏼♂️ 🧜🏼♀️ 🧜🏼 🧜🏼♂️ 🧚🏼♀️ 🧚🏼 🧚🏼♂️ 👼🏼 🤰🏼 🤱🏼 👩🏼🍼 🧙🏼 🧙🏼♂️ 🧝🏼♀️ 🧝🏼 🧝🏼♂️ 🧛🏼♀️ 🧛🏼 🧛🏼♂️ 🧜🏼♀️ 🧜🏼 🧜🏼♂️ 🧚🏼♀️ 🧚🏼 🧚🏼♂️ 👼🏼 🤰🏼 🤱🏼 👩🏼🍼
二、代码实现
#include<stdio.h>
#include<stdlib.h>
#include <ctype.h>
//快速排序练习
void print(int arr[], int n);//打印数组的函数
int partition(int arr[], int l, int r);
void quicksort(int arr[], int head, int tail);
int main()
{
int arr[100] = { 0 };
int i = 0;
int n = 0;
while (scanf("%d", &n))//输入不是数字的时候就退出循环
{ //循环输入一个数组
arr[i] = n;
i++;
if (i == 99)
{
break;
}
}
print(arr, i);
quicksort(arr,0,i-1);
print(arr, i);
return 0;
}
void print(int arr[], int n)//打印数组的函数
{
int i = 0;
for (i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}
void quicksort(int arr[], int head, int tail)//快速排序递归
{
if (head < tail)
{
int mid = partition(arr, head, tail);
quicksort(arr, head, mid - 1);
quicksort(arr, mid + 1, tail);
}
}
int partition(int arr[],int l, int r)//元素调换
{
int temp = arr[l];
while (l < r)
{
while (l<r && arr[r]>=temp)//从右边寻找比temp小的元素
{
r--;
}
if (l < r)
{
arr[l] = arr[r];//换到左边temp
l++;
}
while (l < r && arr[l] <= temp)//从左边寻找比temp大的元素
{
l++;
}
if (l < r)
{
arr[r] = arr[l];//换到temp右边
r--;
}
}
arr[l] = temp;
return l;
}
图解为画图软件纯手工制作,制作不易,如有帮助请帮博主一键三连!!蟹蟹!!
图解为画图软件纯手工制作,制作不易,如有帮助请帮博主一键三连!!蟹蟹!!
图解为画图软件纯手工制作,制作不易,如有帮助请帮博主一键三连!!蟹蟹!!
图解为画图软件纯手工制作,制作不易,如有帮助请帮博主一键三连!!蟹蟹!!