Java常用排序算法之快速排序

本文介绍了快速排序的基本概念及其算法实现。快速排序是一种高效的排序算法,通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据要小,再按此方法对这两部分数据分别进行快速排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

快速排序(Quicksort):是对冒泡排序的一种改进。
快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
一趟快速排序的算法是:
1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;
2)以数组中间元素作为关键数据,赋值给key,即key=A[N/2];
3)从j开始向前搜索,即由后开始向前搜索(j–),找到第一个小于key的值A[j],将A[j]和A[i]互换;
4)从i开始向后搜索,即由前开始向后搜索(i++),找到第一个大于key的A[i],将A[i]和A[j]互换;
5)重复第3、4步,直到i=j; (3,4步中,没找到符合条件的值,即3中A[j]不小于key,4中A[i]不大于key的时候改变j、i的值,使得j=j-1,i=i+1,直至找到为止。找到符合条件的值,进行交换的时候i, j指针位置不变。另外,i==j这一过程一定正好是i+或j-完成的时候,此时令循环结束)。

public class QuickSort {
    static final int SIZE = 10;

    public static void main(String[] args) {
        int arr[] = new int[SIZE];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = (int) (Math.random() * 100);
        }
        System.out.println("排序前的数组:");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println();
        quickSort(arr, 0, SIZE - 1);
        System.out.println("快速排序后的数组:");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }


        private static void quickSort(int[] a, int low, int high) {
            if(low<high){ //如果不加这个判断递归会无法退出导致堆栈溢出异常
                int middle = getMiddle(a,low,high);
                quickSort(a, 0, middle-1);
                quickSort(a, middle+1, high);
            }
        }

        private static int getMiddle(int[] a, int low, int high) {
            int temp = a[low];//设置基准值temp
            while(low<high){

                while(low<high && a[high]>=temp){
                    high--;
                }//从后往前找到第一个比基准元素小的元素位置
                a[low] = a[high]; //将其赋值给a[low]
                while(low<high && a[low]<=temp){
                    low++;
                }//从前往后找到第一个比基准元素大的元素位置
                a[high] = a[low];//将其赋值给a[high]
            }
            a[low] = temp;//将本轮基准值赋值给新的a[low]此时比基准值temp小的数都在a[low]左边
                          //比基准值temp大的数都在a[low]右边
            return low;//返回此轮基准值temp的此轮排序后的索引
        }
}

输出:

排序前的数组:
1 43 48 99 21 67 34 17 87 22 
快速排序后的数组:
1 17 21 22 34 43 48 67 87 99
### 如何使用 Dify 创建 ChatFlow Dify 是一款强大的工具,支持 RAG 和 Chat 功能,并允许用户通过简单的配置来创建复杂的对话流 (ChatFlow)[^1]。以下是关于如何利用 Dify 来构建 ChatFlow 的详细说明。 #### 配置环境 在开始之前,确保已经安装并运行了 Dify 平台。如果尚未完成此操作,请参考官方文档或相关教程进行初始化设置[^2]。 #### 创建基础 Chat 流程 1. **启动新项目** 登录到 Dify 控制面板后,在界面中找到新建项目的选项,选择适合自己的模板或者手动建立空白项目用于自定义开发[^1]。 2. **集成大模型服务** 在 Dify 中可以通过简单几步实现与主流云端 AI 模型以及本地化部署的大规模预训练模型连接。这一步通常涉及 API 密钥输入或其他认证方式验证过程。 3. **设计交互逻辑** 使用图形化编辑器拖拽节点组件来搭建整个会话路径图谱。每个节点代表特定功能模块比如问候语句处理、问题分类解析等环节;边线则表示不同条件分支下的跳转关系。 4. **测试初步效果** 完成上述基本架构设定之后就可以立即试用看看实际表现情况怎么样啦!点击模拟按钮开启一轮虚拟客户交流体验吧~ 如果发现某些地方不够理想的话记得返回调整优化哦! #### 进阶定制化 当熟悉了基础框架运作原理以后还可以进一步探索更多高级特性: - 添加多媒体素材支持:除了纯文字形式外还能够嵌入图片链接地址甚至是实时音视频通话能力扩展; - 调整权重算法提升精准度:通过对历史数据的学习不断改进预测准确性从而让回复更加贴近真实需求场景; - 外部数据库联动查询:假如企业内部存在现成可用的数据源那么完全可以将其无缝融入进来作为补充参考资料来源之一。 ```python # 示例代码片段展示如何调用远程API接口获取动态更新内容填充至最终呈现给用户的答案部分当中去。 import requests def fetch_latest_news(topic): url = f"https://api.example.com/news?topic={topic}" response = requests.get(url) if response.status_code == 200: news_data = response.json() return news_data['articles'][0]['title'] else: return "Failed to retrieve the latest news." latest_headline = fetch_latest_news('technology') print(latest_headline) ``` 以上就是有关于怎样借助 Dify 工具平台快速高效地打造出属于自己的个性化聊天机器人解决方案的整体思路概述。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值