


对数组arr[]={3,44,38,5,47,15,36,26,27,2,46,4,19,50,48}进行升序排序
算法描述(核心代码):
int sort(int arr[],int low,int high){
int start=low,end=high;
int key=arr[low];
while(low<high){
while(low<high && arr[high]>=key)
high--;
if(low<high)
arr[low++]=arr[high];
while(low<high && arr[low]<=key)
low++;
if(low<high)
arr[high--]=arr[low];
}
arr[low]=key;
if(start<end){
sort(arr,start,low-1);
sort(arr,low+1,end);
}
}
完整程序:
#include<iostream>
using namespace std;
int sort(int arr[],int low,int high){
int start=low,end=high;
int key=arr[low];
while(low<high){
while(low<high && arr[high]>=key)
high--;
if(low<high)
arr[low++]=arr[high];
while(low<high && arr[low]<=key)
low++;
if(low<high)
arr[high--]=arr[low];
}
arr[low]=key;
//为了方便观看,以下几行代码特意多加的
int i=0; //++
while(i<15) //++
cout<<arr[i++]<<" "; //++
cout<<endl; //++
if(start<end){
sort(arr,start,low-1);
sort(arr,low+1,end);
}
}
int main(){
int arr[]={3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};
int i=0;
while(i<15)
cout<<arr[i++]<<" ";
cout<<endl;
sort(arr,0,14);
i=0;
while(i<15)
cout<<arr[i++]<<" ";
return 0;
}
注意:标准库里是有这个库函数的
函数原型:
#include<stdlib.h>//头文件
void qsort( void*, size_t, size_t, int ( * )(const void * , const void * ))
// 数组名, 长度, 元素字节大小 , 排序方式(自己编一个指针函数)
// 举例: arr 100 sizeof(arr[0]) ………………
第一个参数为待排序数组首地址。
可直接输入待排序数组名,或是指向数组的指针。
第二个参数为数组长度。
size_t是标准C库中定义的,应为unsigned int,在64位系统中为 long unsigned int。
可以直接输入待排序的数组的长度。
第三个参数为数组元素所占字节。
可直接用sizeof(a[0])计算字数组单个元素的节数。
第四个参数为所调用函数的指针,函数名即是函数的指针,可直接写函数名,调用函数用来确定排序的方式。
自己编的函数模板(!!加红的表示不可更改!!)
int cmp (const void * a,const void *b)
{
return *(int *)a - *(int *)b;
}
int cmp (const void * a,const void *b)
{
return *(int *)a - *(int *)b; //如果要降序排序,只需将return里的a,b反过来写即可。
} //是字符型两个“int”均改成“char”即可
//浮点型改成“float” 双精度改成“doubie”………………
举个栗子:::::::::::::
#include<stdio.h>
#include<stdlib.h>
int cmp(const void *a, const void *b){
return *(int *)a - *(int *)b;
}
int main (){
int arr[]={3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};
qsort(arr, 15, sizeof(int), cmp);
for (int i = 0; i < 15; i++)
printf("%d ", arr[i]);
return 0;
}

本文详细介绍了快速排序算法的原理及实现过程,通过一个具体的例子展示了如何使用C++实现升序排序。同时,也提到了标准库中的qsort函数,并给出了其使用示例,帮助读者理解排序函数的通用调用方式。
624

被折叠的 条评论
为什么被折叠?



