- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
快速排序:说白了就是给基准数据找其正确索引位置的过程。
mid=a[头+尾)/2];
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int Max = 100; //定义数组长度
int a[Max];
void qsort(int,int);
int main(){
int n,i;
cout<<"输入n个整数:";
cin>>n;
cout<<"每个整数按空格隔开:"<<endl;
for(i=1;i<=n;i++) //输入数据
cin>>a[i];
qsort(1,n); //调用函数
cout<<"快速排序结果:"<<endl;
for(i=1;i<=n;i++) //输出数据
cout<<a[i]<<" ";
cout<<endl;
}
void qsort(int h,int r){
int begin,end,mid,p;
begin=h; //标记开头
end=r; //标记尾巴
mid=a[(h+r)/2]; // 定义数组中间的元素基准数
do
{
while(a[begin]<mid) begin++; //左部分寻找比中间大的数位置
while(a[end]>mid) end--; //右部分寻找比中间小的数位置
if(begin<=end) //找到位置,交换值,直到两个标记相遇
{ //在左边数比mid大 or 右边数比mid小的情况-->交换值
p=a[begin];
a[begin]=a[end];
a[end]=p;
begin++;
end--;
}
}while(begin<=end);
// 一趟过后,begin>end; mid的左边数<mid; mid的右边数>mid;
if(h<end) //mid左边满足条件
qsort(h,end); // 递归->对h,end的范围进行qsort()判断
if(begin<r) //mid右边满足条件
qsort(begin,r); // 递归->
}
快速排序是不稳定的排序方法,时间复杂度是O(nlog2n),速度快,平均时间来说,快速排序是最好的一种内部排序方法。但快速排序需要一个栈空间实现递归,每一趟排序都会将记录序列分割成两个子序列,栈最大深度为log(n+1)。
归并的思路(分治)是把一个大问题a拆解成两个小问题b和c,解决了两个子问题再整合一下,就解决了原问题。用递归的方法,先分解再合并(分治是一种解决问题的处理思想,递归是一种编程技巧,这两者并不冲突)。
1. 若low>high,则将序列分从中间mid=(low+high)/2分开;
2. 对左半部分[low, mid]递归地进行归并排序;
3. 对右半部分[mid+1, high]递归地进行归并排序;
4. 将左右两个有序子序列Merge为一个。
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int Max = 1000; //定义数组长度
int a[Max]; //定义数组
int r[Max]; //定义辅助函数
void merge(int a[],int low,int mid,int high){ //2.3
int i=low,j=mid+1,k=low; //i,j标记mid分割后左右序列的首位置,k记录序列首位置
for(k;k<=high;k++) //把数组a复制到数组r上;
r[k]=a[k];
for(k=i;i<=mid && j<=high; k++){ //在范围内
if(r[i]<=r[j]) //比较左、右序列的值,把小的值存在数组a;
a[k]=r[i++]; //以此类推,保证数组a[]顺序存储从小到大;
else
a[k]=r[j++];
} //剩下的不在在范围内
while(i<=mid) a[k++]=r[i++]; //保存到数组a[]后面
while(j<=high) a[k++]=r[j++];
}
void msort(int a[],int low,int high){ //2.1
if(low<high){
int mid=(low+high)/2;
msort(a,low,mid);
msort(a,mid+1,high); //当函数msort()递归到只有一个元素组成的序列
merge(a,low,mid,high); //2.2 就调用这个方法
}
}
int main(){
int n;
cout<<"输入n个整数:";
cin>>n;
cout<<"每个整数按空格隔开:"<<endl;
for(int i=1;i<=n;i++) //1、输入数据
cin>>a[i];
msort(a,1,n); //2、调用函数
cout<<"归并排序结果:"<<endl;
for(int i=1;i<=n;i++) //3、输出数据
cout<<a[i]<<" ";
cout<<endl;
}
如何更改循环中变量的名称?比如 number1 、 number2 、 number3 、 number4 ? var array = [2,4,6,8] func ap ( number1: Int
我想设置 View 的背景颜色并在一定延迟后将其更改为另一种颜色。这是我的尝试方式: print("setting color 1") self.view.backgroundColor = UICo
我在使用 express-session 时遇到问题。 session 数据不会在请求之间持续存在。 正如您在下面的代码中看到的那样,/join 路由设置了一些 session 属性,但是当 /sur
我试图从叶渲染器获得一个非常简单的结果,用于快速 Steam 的 for 循环。 我正在上传叶文件 HTML,因为它不接受此处格式正确的代码 - 下面的pizza.swift代码- import
你们中有人有什么好的链接可以与我分享吗?我正在寻找一个 FAST 程序员编辑器,它可以非常快速地打开包含超过 100, 000 行代码的文件?我目前正在使用记事本自动取款机,打开一个 29000 行长
我现在正在处理眼动追踪数据,因此拥有一个巨大的数据集(想想数百万行),因此希望有一种快速的方法来完成此任务。这是它的简化版本。 数据告诉您眼睛在每个时间点正在查看的位置以及我们正在查看的每个文件。 X
我是新手,想为计时器或其他设备选择提示音。 如何打开此列表,以选择其中一种声音? Alert sound list 最佳答案 您将无法在应用中使用系统声音。 但是,您可以包括自己的声音文件,并将其显示
我编写了以下代码来构建具有顺序字符串的数组。 它的工作方式与我预期的一样,但我希望它能更快地运行。有没有更有效的方法在PowerShell中产生我想要的结果? 我是PowerShell的新手,非常感谢
我有一个包含一些非唯一行的矩阵,例如: x 尝试 y <- rle(apply(x, 1, paste, collapse = " ")) # y$lengths is the vector con
我的函数“keyboardWillShown”有问题。所以我想要的是菜单打开时,菜单正好出现在键盘上方。它可以在Iphone 8 plus,8、7、6上完美运行。但是,当我在模拟器上运行Iphone
我正在尝试通过Swift 5中的HTTP get方法从API提取数据。它在启动时成功加载了数据,但是当我刷新页面时,它说“索引超出范围”,这是因为数据是不再会在我的日志中读取,因此索引中没有任何内容。
我想做什么: 从我的数据库中获取时间戳并将其转换为用户的时区。 我的代码: let tryItNow = "\(model.timestampName)" let format = D
给定字体名称和字体大小,如何查找字符串的宽度(CGFloat)? (目标是将UIView的宽度设置为足以容纳字符串的宽度。) 我有两个字符串:一个重复“1”,重复36次,另一个重复“M”,重复36次。
我正在尝试解析此JSON ["Items": ( { AccountBalance = 0; AlphabetType = 3; Description = "\U0631\U
我在UINavigationBar内放置了一个UILabel。 我想根据navigationBar的高度增加该标签的字体大小。当navigationBar很大时,我希望字体大小更大;当滚动并缩小nav
我想将用户输入限制为仅有效数字并使用以下内容: func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, rep
目前我有一个包含超过 100.000 张图像的数据库,它们大小不一或类似,但我想为我的公司制作以下内容: 我插入/上传一张图片,系统返回最有可能相同的图片。我不知道使用什么算法,但它需要快速。我可以预
在我的 swift 项目中,我有一个按钮,我想在标签上打印按下该按钮的时间。 如何解决这个问题? 最佳答案 添加到DHEERAJ的答案中,您只需在func press(sender: UIButton
我必须发表评论,尝试在解析中导入数组。然而,有一个问题。 当我尝试从 Parse 加载数组时,我的输出是 ("Blah","Blah","Blah")这是一个元组...而不是一个数组 TT... 如何
我的应用程序有一个名为 MyDevice 的类,我用它来与硬件通信。该硬件是可选的,实例变量也是可选的: var theDevice:MyDevice = nil 然后,在应用程序中,我必须初始化设备
我是一名优秀的程序员,十分优秀!