#include <iostream>
#include <math.h>
using namespace std;
void quickSort(int *a,int start,int End);
int result(int arr[],int len);
int main()
{
int a[] = {45,8,2,4,9,32,56,41,56,32,54,27,55,62};
cout<<"排序之前元素:\n";
for(int i = 0;i < 14; i ++ ){
cout<<a[i]<<" ";
}
quickSort(a,0,13);
cout<<"排序之后元素:\n";
for(int i = 0;i < 14; i ++ ){
cout<<a[i]<<" ";
}
cout<<"\n"<<result(a,13);
return 0;
}
void quickSort(int arr[],int low, int high){//降序
if(high<=low)return;
int i = low,j = high+1;
int key = arr[low];
while(true){
while(arr[++i]>key){
if(i == high)
break;
}
while(arr[--j]<key){
if(j == low)
break;
}
if(i>=j)break;
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
cout<<"交换"<<arr[i]<<" - "<<arr[j]<<"\n";
}
key = arr[j];
arr[j] = arr[low];
arr[low] = key;
cout<<"交换中枢"<<"j="<<j<<"\n";
quickSort(arr,low,j-1);
quickSort(arr,j+1,high);
}
int result(int arr[],int len){
int result = fabs(arr[0]-arr[1]);
for(int i= 1;i<len-1;i++){
if(fabs(arr[i]-arr[i+1])<result){
result = arr[i]-arr[i+1];
}
}
return result;
}
2020-03-06查找数组中两个相差最小的两个数的差(快速排序)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 题目:有两个数组a,b, 大小都是n,数组元素的值任意,无序. 要求:通过交换a b中的元素,使数组a元素的和与数...
- 下面我们讨论上述问题的解决思路: 思路一如果采用堆排序的构造最小堆,然后每次输出根结点元素后再调整最小堆然后反复调...
- 题目: 输入n个数,找出其中最小的k个数(k<=n)。 思路: 思路一: 将n个数排序,输出前k个。时间复杂度为O...
- 最近有个词在网上出现的频率比较高,叫私域流量。这个词听上去比较生涩,不如之前我们爱用的“流量池”那般形象好懂。其实...