c语言怎样实现快速排序

如题所述

第1个回答  2020-10-10
include<stdio.h>

int arr_num[];
int length;

void quick_sort(int left, int right)
{
int i, j, c, temp;
if(left>right)
return;

i= left;
j= right;
temp = arr_num[i]

while(i != j)
{
while(arr_num[j]>=temp && i<j)
{
j--;
}

while(arr_num[i]<=temp && i<j)
{
i++;
}

if(i<j)
{
c = arr_num[i];
arr_num[i] = arr_num[j];
arr_num[j] = c;
}
}

//left为起始值(参照值)此时的I为第一次排序结束的最后值,与参照值交换位置
arr_num[left] = arr_num[i];
arr_num[i] = temp;

//继续递归直到排序完成
quick_sort(left, i-1);
quick_sort(i+1, right);
}

int main()
{
int i;
length = 7;
arr_num[length] = {23, 7, 17, 36, 3, 61, 49}

//快速排序调用
quick_sort(0, length-1);

//输出排序后的结果
for(i=1;i<=length;i++)
printf("%d ",arr_num[i]);
getchar();getchar();
return 0;
}

数据结构C语言--三种以上的排序算法
在指定区间内选择一个中间值mid,将数组分为两部分,一部分比中间值小,一部分比中间值大。然后递归地对两部分进行快速排序。实现逻辑如下:初始化i和j分别为区间两端,然后从中间向两端遍历,将大于中间值的元素交换到右边,小于等于中间值的元素交换到左边。递归调用QSort函数进行排序。二叉查找树插入:...

c语言快速排序函数怎么写?
快速排序的实现方式主要有三种:1. Hoare版本:选择序列最左侧或最右侧元素作为基准值,经过一次排序后,将基准值置于正确位置,左侧元素均小于基准值,右侧元素均大于基准值。重复此过程直至序列有序。2. 挖坑法:同样选择序列最左侧或最右侧元素作为基准值,经过排序后基准值位于正确位置,左侧元素均小于基...

c语言sort函数如何使用
一、概述 在C语言中,sort函数是用于对数组进行排序的。该函数通常存在于标准库中,能够实现对数组的快速排序。使用sort函数需要确保数组已经初始化,并且传递给函数的指针要指向数组的首元素。二、使用步骤 1. 包含头文件:在使用sort函数之前,需要在程序的开头包含头文件。c include 2. 定义数组并初始...

C语言的快速排序的算法是什么啊?
一趟快速排序的算法是: 1)设置两个变量I、J,排序开始的时候:I=0,J=N-1; 2)以第一个数组元素作为关键数据,赋值给key,即 key=A[0]; 3)从J开始向前搜索,即由后开始向前搜索(J=J-1),找到第一个小于key的值A[J],并与key交换; 4)从I开始向后搜索,即由前开始向后搜索(I...

c语言排序问题
你可以用以下这二种方法(很容易实现的):1、冒泡法:比如说有一串数{1,4,6,3,7}先用1与4比较,排序为1,4,再用4与6比较,位置不变,再用6与3比较,交换,再用6与7比较,不变。这样最大的就到了末尾。进行最多n-1次完成。不过这种方法在数字大时比较慢,但是稳定。2、快速排序 快...

C语言中快速排序法的原理及应用
一般来说,冒泡法是程序员最先接触的排序方法,它的优点是原理简单,编程实现容易,但它的缺点就是--程序的大忌--速度太慢。附上快速排序代码:include<stdio.h>void quicksort(int a[],int left,int right){ int i,j,temp; i=left; j=right; temp=a[left]; if(left>right...

如何将c语言实现按从小到大的顺序输出?
C语言实现将数组的六个元素按从小到大的顺序输出,可以采用内部排序算法对数组的元素进行排序,然后输出排序后的数组,就可以得到按从小到大的顺序输出。以快速排序为例的排序代码:void quickSort(int a[],int l,int r) { if(l>=r)return;int i = l;int j = r;int key = a[l];\/\/选择...

C语言快速排序问题!
选择法,排序 int main() { int a[11]={1,5,6,8,4,2,10,56,20,55}; int i; printf("\\n冒泡排序\\n"); bubble(a,10); for(i=0;i<10;i++) printf("%d ,",a[i]); printf("\\n选择排序\\n"); choise(a,10); for(i=0;i<10;i++)...

c语言怎样实现快速排序
\/\/继续递归直到排序完成 quick_sort(left, i-1);quick_sort(i+1, right);} int main(){ int i;length = 7;arr_num[length] = {23, 7, 17, 36, 3, 61, 49} \/\/快速排序调用 quick_sort(0, length-1);\/\/输出排序后的结果 for(i=1;i<=length;i++)printf("%d ",arr_num[i...

c语言10个整数快速排序降序
include <stdio.h>void quickSort(int a[],int left,int right)\/\/快速排序法{ int i,j; int k; int t; if(left < right) { i = left; j = right; k = a[left]; while(i < j) { while(i < j && a[j] <= k) j--; while(i < j && a[i] >= k...

相似回答