python算法设计的步骤有三步分别是 python编写程序的一般步骤

\u7b97\u6cd5\u8bbe\u8ba1\u7684\u8fc7\u7a0b\u4e00\u822c\u662f\u4ec0\u4e48\u6837\u5b50 \u7b97\u6cd5\u8bbe\u8ba1\u7684\u8fc7\u7a0b\u4e00\u822c\u662f\u90a3\u51e0\u6b65

\u548c\u4f60\u505a\u6570\u5b66\u9898\u76ee\u7684\u8fc7\u7a0b\u4e00\u6837,\u5df2\u77e5\u6761\u4ef6\u662f\u4ec0\u4e48?\u5df2\u77e5\u91cf\u662f\u4ec0\u4e48?\u8981\u6c42\u4ec0\u4e48?\u9700\u8981\u8f93\u51fa\u4e00\u4e2a\u4ec0\u4e48\u7ed3\u679c?
\u7b97\u6cd5\u8bbe\u8ba1\u5c31\u662f\u628a\u95ee\u9898\u89e3\u51b3\u6b65\u9aa4\u7528\u8ba1\u7b97\u673a\u7f16\u7a0b\u8bed\u8a00\u6765\u8868\u793a\u51fa\u6765

\u8fd9\u4e2a\u7f16\u5199\u7a0b\u5e8f\u7684\u4e00\u822c\u6b65\u9aa4\u5305\u62ec\u90a3\u4e2a\u51c6\u5907\u5de5\u4f5c\u90a3\u4e2a\u8fdb\u884c\u7136\u540e\u90a3\u4e2a\u554a\u90a3\u68c0\u67e5\u7136\u540e\u662f\u4e2a\u63d0\u4ea4\u3002

1. 弄清楚题目的意思,列出题目的输入、输出、约束条件
其中又一道题目是这样的:“有一个mxn的矩阵,每一行从左到右是升序的,每一列从上到下是升序的。请实现一个函数,在矩阵中查找元素elem,找到则返回elem的位置。”题设只说了行和列是升序的,我在草稿纸上画了一个3x4的矩阵,里面的元素是1~12,于是我就想当然的认为矩阵的左上角是最小的元素,右下角是最大的元素。于是整个题目的思考方向就错了。
2. 思考怎样让算法的时间复杂度尽可能的小
继续以上面的题目为例子。可以有如下几种算法:
a. 遍历整个矩阵进行查找,那么复杂度为O(m*n);
b. 因为每一行是有序的,所以可以对每一行进行二分查找,复杂度为O(m*logn)。但是这样只用到了行有序的性质。
c. 网上查了一下,最优的算法是从矩阵的左下角开始,比较左下角的元素(假设为X)与elem的大小,如果elem比X大,那么X所在的那一列元素就都被排除了,因为X是该列中最大的了,比X还大,那么肯定比X上面的都大;如果elem比X小,那么X所在的那一行就可以排除了,因为X是这一行里最小的了,比X还小那么肯定比X右边的都小。每迭代一次,矩阵的尺寸就缩小一行或一列。复杂度为O(max(m,n))。
可以先从复杂度较高的实现方法入手,然后再考虑如何利用题目的特定条件来降低复杂度。
3. 编写伪代码或代码

  • Python涓昏瑕佸閭d簺璇剧▼鍟?
    绛旓細閾炬帴: https://pan.baidu.com/s/1WLp5pZ7jDhs0hr_rx6YyYQ 鎻愬彇鐮: s74j 璐哄湥鍐Python杞绘澗鍏ラ棬鍒伴」鐩疄鎴橈紙缁忓吀瀹屾暣鐗堬級锛堣秴娓呰棰戯級鐧惧害缃戠洏
  • python鎬庝箞鍒嗘瀽鏁版嵁
    绛旓細浣嗘槸閽堝浜庢洿鍔犲紑鏀剧殑鏁版嵁鍒嗘瀽鍦烘櫙鏃讹紝灏遍渶瑕侀氳繃缂栫▼鐨勬柟寮忔潵杩涜鏁版嵁鍒嗘瀽浜嗭紝姣斿閫氳繃鏈哄櫒瀛︿範鐨勬柟寮忚繘琛屾暟鎹垎鏋愶紝鑰Python璇█鍦ㄦ満鍣ㄥ涔犻鍩熸湁骞挎硾鐨勫簲鐢ㄣ傞噰鐢ㄦ満鍣ㄥ涔犵殑鏂瑰紡杩涜鏁版嵁鍒嗘瀽闇瑕佺粡杩囦簲涓姝ラ锛屽垎鍒槸鏁版嵁鍑嗗銆绠楁硶璁捐銆佺畻娉曡缁冦佺畻娉曢獙璇佸拰绠楁硶搴旂敤銆傞噰鐢ㄦ満鍣ㄥ涔犺繘琛屾暟鎹垎鏋愭椂锛岄鍏堣浜嗚В...
  • Python杞欢娴嬭瘯瀛︿範璺嚎
    绛旓細闃舵鐩爣锛1. 鐔熺粌鎺屾彙IT鏍稿績鎶鏈細缂栫▼锛屾暟鎹簱锛屾搷浣滅郴缁燂紝鐗堟湰鎺у埗 2. 鑳藉鐔熺粌杩愮敤鎵瀛︽妧鏈惌寤哄悇绫绘湇鍔″櫒鐜 3. 娣卞叆鐞嗚В杞欢鐮斿彂杩囩▼鍚勭鐤戦毦鏉傜棁鍙婂鐞嗘墜娈 4. 鎺屾彙Python缂栫▼鎶鏈苟鐔熺粌杩愮敤Python杩涜绋嬪簭璁捐 鐭ヨ瘑鐐癸細1銆乄eb椤甸潰鍏冪礌锛屽竷灞锛孋SS鏍峰紡锛岀洅妯″瀷锛孞avaScript绋嬪簭璁捐锛屽嚱鏁帮紝鍩虹绠楁硶...
  • 鎯冲python鏈浠涔堣矾绾垮彲浠ヨ鍒掍竴涓嬪悧?
    绛旓細瀛︿範鐩爣锛氬彲浠ユ帉鎻$埇铏佹暟鎹噰闆嗭紝鏁版嵁鏈烘瀯涓绠楁硶杩涢樁鍜屼汉宸ユ櫤鑳芥妧鏈傚彲浠ュ畬鎴愮埇铏敾闃层佸浘鐗囬┈璧涘厠銆佺數褰辨帹鑽愮郴缁熴佸湴闇囬娴嬨佷汉宸ユ櫤鑳介」鐩瓑闃舵椤圭洰銆傜鍥涢樁娈甸珮绾ц繘闃躲傝繖鏄Python楂樼骇鐭ヨ瘑鐐癸紝浣犻渶瑕佸涔犻」鐩紑鍙娴佺▼銆侀儴缃层侀珮骞跺彂銆佹ц兘璋冧紭銆丟o璇█鍩虹銆佸尯鍧楅摼鍏ラ棬绛夊唴瀹广傚涔犵洰鏍囷細鍙互鎺屾彙鑷姩鍖栬繍缁...
  • python鐨绋嬪簭缁撴瀯鏈夊摢鍑犵
    绛旓細鈶犻『搴忕粨鏋勶細鍗宠鍙ヤ粠涓婂埌涓嬫寜椤哄簭鎵ц 鈶″垎鏀粨鏋勶細涓鏉″ぇ璺紝浼氭湁寰堝鍒嗘敮璺彛銆傚湪python甯哥敤if..elif..else鍒ゆ柇璇彞 鈶㈠惊鐜粨鏋勶細渚嬪鍍忔斁姝屼竴鏍凤紝姝屽崟寰幆鎾斁銆傚湪python甯哥敤while寰幆鎴栨槸for寰幆
  • 浠涔堟槸绋嬪簭璁捐
    绛旓細浜屻佺▼搴璁捐鐨鏍稿績瑕佺礌 绋嬪簭璁捐鐨勬牳蹇冨湪浜绠楁硶鍜岄昏緫鐨勮璁°傜畻娉曟槸涓绯诲垪瑙e喅闂鐨勬楠锛岃岄昏緫鍒欐槸杩欎簺姝ラ涔嬮棿鐨勫叧鑱斿拰椤哄簭銆傚湪绋嬪簭璁捐涓紝绠楁硶鍜岄昏緫鐨勮璁$洿鎺ュ喅瀹氫簡绋嬪簭鐨勬晥鐜囧拰鍑嗙‘鎬с傛澶栵紝绋嬪簭璁捐杩橀渶瑕佸叧娉ㄧ▼搴忕殑缁撴瀯銆佹暟鎹祦鍜屾帶鍒舵祦绛夋柟闈備笁銆佺▼搴忚璁$殑瀹為檯搴旂敤 绋嬪簭璁捐骞挎硾搴旂敤浜庡悇涓...
  • Python濂藉鍚?
    绛旓細褰撶劧锛岄噰鐢Python璇█涔熷彲浠ュ啓鍑洪潪甯稿鏉傜殑绋嬪簭锛屽挨鍏跺湪浜哄伐鏅鸿兘棰嗗煙锛岄噰鐢≒ython鏉ュ畬鎴愮畻娉曞疄鐜鐨勮繃绋杩樻槸鐩稿姣旇緝澶嶆潅鐨勩備笉灏戝紑鍙戝洟闃熸妸绠楁硶璁捐鍜岀畻娉曞疄鐜拌繘琛屼簡鍒嗙锛屼粠浜嬬畻娉曞疄鐜扮殑宸ョ▼甯堝線寰闇瑕侀氳繃Python绛夎瑷鏉ュ疄鐜扮畻娉曡璁″笀鐨勮璁℃柟妗堬紝杩欎釜杩囩▼寰寰杩樻槸鍏锋湁涓瀹氶毦搴︾殑锛岃屼笖瑕佹眰绠楁硶瀹炵幇宸ョ▼甯堜篃瑕佸叿澶...
  • 闈㈣瘯蹇呬細鍏ぇ鎺掑簭绠楁硶(Python)
    绛旓細鈶㈤拡瀵规墍鏈夌殑鍏冪礌閲嶅浠ヤ笂鐨勬楠锛岄櫎浜嗘渶鍚庝竴涓傗懀鎸佺画姣忔瀵硅秺鏉ヨ秺灏戠殑鍏冪礌閲嶅涓婇潰鐨勬楠わ紝鐩村埌娌℃湁浠讳綍涓瀵规暟瀛楅渶瑕佹瘮杈冦绠楁硶瀹炵幇锛氫笁銆佸揩閫熸帓搴 浠嬬粛 蹇熸帓搴忥紙Quicksort锛夋槸瀵瑰啋娉℃帓搴忕殑涓绉嶆敼杩涳紝鍊熺敤浜嗗垎娌荤殑鎬濇兂锛岀敱C. A. R. Hoare鍦1962骞存彁鍑恒傚熀鏈濇兂 蹇熸帓搴忕殑鍩烘湰鎬濇兂鏄細鎸栧潙濉暟 +...
  • 鎬庢牱鎵嶅彲浠ヨ嚜瀛Python鍛
    绛旓細3銆佺被鐨勫師鐞嗭紝MetaClass锛屼笅鍒掔嚎鐨勭壒娈婃柟娉曪紝閫掑綊锛岄瓟鏈柟娉曪紝鍙嶅皠锛岃凯浠e櫒锛岃楗板櫒锛孶nitTest锛孧ock銆傛繁鍏ョ悊瑙i潰鍚戝璞″簳灞傚師鐞嗭紝鎺屾彙Python寮鍙戦珮绾ц繘闃舵妧鏈紝鐞嗚В鍗曞厓娴嬭瘯鎶鏈4銆佹暟鎹簱鐭ヨ瘑锛岃寖寮忥紝MySQL閰嶇疆锛屽懡浠わ紝寤哄簱寤鸿〃锛屾暟鎹殑澧炲垹鏀规煡锛岀害鏉燂紝瑙嗗浘锛屽瓨鍌杩囩▼锛屽嚱鏁帮紝瑙﹀彂鍣紝浜嬪姟锛屾父鏍囷紝PDBC锛...
  • python绠楁硶鏈鍝簺
    绛旓細Python绠楁硶鐨鐗瑰緛 1. 鏈夌┓鎬э細绠楁硶鐨勬湁绌锋ф寚绠楁硶蹇呴』鑳藉湪鎵ц鏈夐檺涓姝ラ涔嬪悗缁堟;2. 纭垏鎬э細绠楁硶鐨勬瘡涓姝ラ蹇呴』鏈夌‘鍒囩殑瀹氫箟;3. 杈撳叆椤癸細涓涓畻娉曟湁0涓垨澶氫釜杈撳叆锛屼互鍒荤敾杩愮畻瀵硅薄鐨勫垵濮嬫儏鍐碉紝鎵璋0涓緭鍏ユ槸鎸囩畻娉曟湰韬畾鍑轰簡鍒濆鏉′欢;4. 杈撳嚭椤癸細涓涓畻娉曟湁涓涓垨澶氫釜杈撳嚭锛屼互鍙嶆槧瀵硅緭鍏ユ暟鎹...
  • 扩展阅读:少儿python编程自学 ... 抄10个python小程序 ... python初学编程必背 ... 大一python基础编程题 ... python经典100编程题 ... python编程必背单词 ... python流程图一键转化 ... python制作窗口界面 ... python编程入门自学 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网