`
y806839048
  • 浏览: 1121529 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

复杂代码的设计书写

阅读更多

 

先设计好思路,然后一部写,可从关键步骤写---程序先要设计好走的思路对于复杂部分才可以写出

功能组件---(函数中的代码可以按照功能组件抽象)可以打的步骤写好之后再完善,先可以一个名字代替,

设计好思路后划分功能组件一个组件一个组件的去完善代码 

对于初步设计代码中出现的问题,分析造成代码问题的根本原因,然后修改程序设计,

1,从根本原因解决  

    快速排序的思路就是从根本原因解决,由于值交换之后值的位置不能锁定---》如果值能根据比较的当前的下标关联就好---》换到的位置的下标是循环中用的下标---》

    在用现在的下标去比较--记录被比较下标移动时自动关联,交换时自动有--->反方向即可实现下标和标准值的关联----》由于一个新问题到底是低位还是高位---》由于

    比较次数的基偶性不确定---》可不可以保持一直是偶数---》基数*2---》每次遍历一次大的里有两次小的遍历第二次反方向遍历

2,对问题的弥补

 

1,以数组的第一个为基础分左右大小类

2,左右类在以各自的第一个为基础在排序分左右大小类

3,都是在一个数组上操作,基准好了就不再排了

4,下一次的位置基准是排好后的这个基准

5,换位置,一个一个和其比较小的放左边,大的放右边(按序号比不能漏)===这种思路需要记录标注位置,采用弥补的方式用另一个变量存下也可

 

如下代码是从根本的思路解决:

 

 

 private int partition(int low,int high,int pivot){

 

        while(low<high){

 

            //左右交替进行,从右边交换了一次下次就从左边交换,左右双向交替确保1,完全遍历完,2保证当下的低位始终是标准的下标

            //只往一边移动很难记录标准的最终位置

 

            while(low<high &&array[high]>=pivot){  //从右端开始扫描,定位到第一个比pivot小的元素

                high--;

            }

            swap(low,high);//只是換元素,标准元素落在swap中的高位或低位

 

            while(low<high &&array[low]<=pivot){  //从左端开始扫描,定位到第一个比pivot大的元素

                low++;

            }

            swap(low,high); //等于的时候就自己和自己交换

 

        }

        return low;

 

    }

 

 

   /**

       * 递归的快速排序

       *@param low  数组的最小下标

       *@param high  数组的最大下标

       */

      private void recursiveQuikSort(int low,int high){

             if(low>=high){

                    return;

             }else{

                    int pivot = array[low];  //以第一个元素为基准

                    int partition =partition(low,high,pivot);  //对数组进行划分,比pivot小的元素在低位段,比pivot大的元素在高位段

                   

                    display(); 

                   

                    recursiveQuikSort(low,partition-1);  //对划分后的低位段进行快速排序

                    recursiveQuikSort(partition+1,high);  //对划分后的高位段进行快速排序

             }

 

 

 

参考:

https://blog.csdn.net/u012152619/article/details/47379295

 

分享到:
评论

相关推荐

    嵌入式软件代码书写的十个技巧

    清晰地注释算法逻辑可以帮助未来的维护者快速理解代码的意图和工作方式,特别是那些复杂的算法或不直观的代码段。 技巧9:使用有意义的变量和函数名 变量名和函数名应当清楚地反映其功能和目的,避免使用缩写和不...

    会说话的代码:书写自表达代码之道.王洪亮(详细书签)

    《会说话的代码:书写自表达代码之道》是王洪亮撰写的一本关于编程实践与代码质量的重要著作。书中的核心理念是强调代码应该具备良好的可读性和自解释性,使得代码不仅能运行,还能“讲述”其设计思路和功能实现。...

    WS代码书写规范.doc

    《WS代码书写规范》文档详细阐述了在VB.NET编程中应遵循的一系列规范,旨在提高代码的可读性、可维护性和团队协作效率。以下是该规范的要点解析: 1. **文件结构** - 工作站代码使用VB.NET 2008进行开发,所有文件...

    VHDL代码书写规范

    VHDL代码书写规范旨在提升代码的可读性、可修改性以及可重用性,同时优化代码综合和仿真结果。在硬件描述语言VHDL(Very high-speed IC Hardware Description Language)开发项目中,确保设计工程师能够使用规范化的...

    会说话的代码-书写自表达代码之道 王洪亮(著)_s13340597-5

    《会说话的代码-书写自表达代码之道》是王洪亮撰写的一本关于编程实践与代码质量提升的著作。这本书的核心理念是强调代码应该具备良好的可读性和自解释性,使得其他开发者能更容易理解并维护。书中深入探讨了如何...

    FPGA花式流水灯,分别用一段式代码和三段式代码书写,含TB文件

    这种方式代码简洁,但可能使得逻辑较难理解和维护,特别是在状态机复杂时。 三段式代码,又称两结构或三部分状态机,将状态机分为三个部分:状态编码(定义每个状态)、状态转移(决定如何从一个状态转移到另一个...

    Google_代码书写风格

    - 模板和泛型:合理使用,避免过度复杂化代码。 2. **Java风格指南** - 命名:类名全大写,每个单词间用下划线分隔;接口名同类名,但开头字母小写;方法名和变量名使用驼峰式命名。 - 注释:遵循Javadoc规范,...

    C++编程代码书写规范.zip

    4. **代码结构**:采用模块化设计,将代码分解为独立的函数和类。每个函数尽可能只做一件事,保持短小精悍。避免大段的未封装代码。 5. **异常处理**:合理使用`try-catch`来处理异常,确保程序在异常情况下能够...

    代码书写规范

    - **代码作用**:使用注释来解释代码的作用,尤其是在逻辑复杂的地方。例如,可以通过注释来解释一个算法的工作原理。 - **逻辑选择**:在使用 if-else 结构时,注释说明条件判断的依据及其预期的结果。 - **类变量...

    VHDL 代码设计规范

    本文档旨在为VHDL设计提供一套完整的代码设计规范,包括书写规范、设计规范以及设计常识等内容,以确保设计的一致性和高质量。 #### 三、书写规范 ##### 3.1 命名规范 - **文件命名**: 每个文件只包含一个模块,...

    书写可维护JavaScript的代码

    ### 书写可维护JavaScript的代码 #### 一、引言:为何关注代码可维护性? 在软件开发领域,代码的可维护性被视为一项至关重要的能力。随着项目的不断扩展与复杂性的增加,保持代码的可读性和易于理解成为了提高...

    vbs代码收集整理、脚本语言书写规范

    - **模块化设计**:尽可能将脚本分割成多个小函数或子程序,每个部分负责单一的功能,提高代码的可读性和可维护性。 - **代码优化**:避免冗余代码,减少不必要的计算和循环次数,提高脚本执行效率。 - **安全性考虑...

    书写干净轻巧易于维护管理的CSS代码

    书写干净、轻巧且易于维护管理的CSS代码是一项艺术与科学的结合,它要求开发者不仅要精通CSS语法和技术细节,还要具备良好的设计思维和团队协作精神。通过遵循上述知识点和建议,开发者可以创建出既美观又高性能的...

    C_C程序源代码书写风格的探讨.pdf

    本文主要针对C/C++程序设计中的源代码书写风格进行了深入探讨,并提出了一系列实用性的建议。良好的代码风格不仅能够提高程序的可读性和可维护性,对于团队合作开发更是至关重要。通过遵循一定的规则和指南,开发...

    《Oracle课程设计案例精编》 源代码 赵京

    总的来说,《Oracle课程设计案例精编》的源代码是学习Oracle数据库操作和应用的重要资源,它提供了实战练习的机会,有助于提升读者的技能水平,为将来从事相关工作打下坚实基础。通过逐个实践案例,读者不仅可以巩固...

    股市论坛源代码.rar

    在深入研究源代码时,还需要理解数据库设计,因为论坛需要存储用户信息、帖子内容、评论等数据。常见的数据库系统如MySQL、PostgreSQL或MongoDB可能被用于存储这些数据。数据库的表结构和查询语句(SQL)都是源代码...

Global site tag (gtag.js) - Google Analytics