主頁 > 軟體工程 > 求助一個演算法,大神都看過來。我覺得很有挑戰性

求助一個演算法,大神都看過來。我覺得很有挑戰性

2020-09-17 11:58:47 軟體工程


如圖示范
不想用回圈對比累加思路
有無別的簡單的命令,或者折中思路?

uj5u.com熱心網友回復:

這種怎么可能不用“回圈”!!!
難道用“回圈”就是復雜的代碼了???



好吧,你自己“用眼睛看、自己去數”,這樣“代碼都不用寫”,哪用什么回圈…………

uj5u.com熱心網友回復:

回圈就是最簡單的代碼!
如果不用代碼來解決問題,倒真是“很有挑戰性”的問題。出門右轉是小學……

uj5u.com熱心網友回復:

查表法

uj5u.com熱心網友回復:

參考 2 樓 Tiger_Zhao 的回復:
回圈就是最簡單的代碼!
如果不用代碼來解決問題,倒真是“很有挑戰性”的問題。出門右轉是小學……


回圈是很耗時的一個東西吧。。。例如一個一維陣列 a(1000000),里面存的數字符,現在要將所有字符取取出來組成一起
如果你用回圈
FOR I=0 TO 999999
        取字符
NEXT I
如果不用回圈,就是一句話
字符=join(a())

所以我想在2維陣列上也大概類似的思路。。。不用回圈。

uj5u.com熱心網友回復:

參考 1 樓 Chen8013 的回復:
這種怎么可能不用“回圈”!!!
難道用“回圈”就是復雜的代碼了???



好吧,你自己“用眼睛看、自己去數”,這樣“代碼都不用寫”,哪用什么回圈…………


大神你好,因為100萬行回圈并且計算出來,估計要耗時幾毫秒,但是這樣我程式要重復處理這樣的步驟達到10萬次,。。那么累加時間就是幾個小時了,,,想找個更簡單的辦法

uj5u.com熱心網友回復:

百萬回圈改為一句陳述句(呼叫一個函式)不等于執行的時間就從百萬降到了一。
圖樣圖森破,少年!

uj5u.com熱心網友回復:

參考 6 樓 Tiger_Zhao 的回復:
百萬回圈改為一句陳述句(呼叫一個函式)不等于執行的時間就從百萬降到了一。
圖樣圖森破,少年!


我覺得有的內置函式是人家微軟發明出來的,做的肯定比我們自己寫的,要先進好多吧。,,

uj5u.com熱心網友回復:

外國的月亮就是要比中國的圓,對吧!!!


你用的計算機,估計作業系統也是Windows吧,
 難道Windows系統的漏洞、Bug還少嗎!

uj5u.com熱心網友回復:

參考 7 樓 qq_37021087 的回復:
Quote: 參考 6 樓 Tiger_Zhao 的回復:

百萬回圈改為一句陳述句(呼叫一個函式)不等于執行的時間就從百萬降到了一。
圖樣圖森破,少年!


我覺得有的內置函式是人家微軟發明出來的,做的肯定比我們自己寫的,要先進好多吧。,,

這個結論,對你來說可能是有很接近“100%”的置信度,
  但對“別人”來說,這是很可能“不靠譜的結論”了。

uj5u.com熱心網友回復:

參考 5 樓 qq_37021087 的回復:
Quote: 參考 1 樓 Chen8013 的回復:

這種怎么可能不用“回圈”!!!
難道用“回圈”就是復雜的代碼了???



好吧,你自己“用眼睛看、自己去數”,這樣“代碼都不用寫”,哪用什么回圈…………


大神你好,因為100萬行回圈并且計算出來,估計要耗時幾毫秒,但是這樣我程式要重復處理這樣的步驟達到10萬次,。。那么累加時間就是幾個小時了,,,想找個更簡單的辦法

建議你把需要解決的問題按“實際情況”描述一下,你這“換一種方式來表達”,未必貼合客觀事實。
并且,很可能你的“解決方案”就已經走上了一條“錯誤的路”、你還強行把別人帶進“陷阱中”之后再去解決問題!

uj5u.com熱心網友回復:

參考 10 樓 Chen8013 的回復:
Quote: 參考 5 樓 qq_37021087 的回復:

Quote: 參考 1 樓 Chen8013 的回復:

這種怎么可能不用“回圈”!!!
難道用“回圈”就是復雜的代碼了???



好吧,你自己“用眼睛看、自己去數”,這樣“代碼都不用寫”,哪用什么回圈…………


大神你好,因為100萬行回圈并且計算出來,估計要耗時幾毫秒,但是這樣我程式要重復處理這樣的步驟達到10萬次,。。那么累加時間就是幾個小時了,,,想找個更簡單的辦法

建議你把需要解決的問題按“實際情況”描述一下,你這“換一種方式來表達”,未必貼合客觀事實。
并且,很可能你的“解決方案”就已經走上了一條“錯誤的路”、你還強行把別人帶進“陷阱中”之后再去解決問題!


大神你好,
我們只就事論事,就情況論情況,既然提出了這個問題,就是以這個問題為基礎討論是否有更好的辦法,其它的都不考慮
如果都覺得回圈來處理是最好最快的,那就沒法了。

uj5u.com熱心網友回復:

不是“用回圈最快”,而是你這樣的問題只適合用回圈來處理!
這種問題“用回圈”是必然的!

至于“總共需要多少時間”,主是看“要做多少事”,而不是看用沒用回圈。
但是,“回圈”程序中的“每完成一步”要消耗多少時間,那就是看你如何去“規劃、設計”的問題了。

針對“同一組資料”處理后達到同一個目的,也許張三的代碼要10ms、李四的代碼要15ms,
 這是各人的“編程技術水平”、解決思路與程序(這個又是間接的由“編程水平”決定)的問題,
 跟“用不用回圈”沒有直接關系。

uj5u.com熱心網友回復:

既然你在11樓這樣“表態”了,我能說的也應該只有這些了。
自己看著辦吧。

uj5u.com熱心網友回復:

參考 13 樓 Chen8013 的回復:
既然你在11樓這樣“表態”了,我能說的也應該只有這些了。
自己看著辦吧。


大神你好。我剛仔細看圖,是橫向100萬行,豎向100列。
如果回圈對比,那就最少要回圈100萬次
是否可以換個思路考慮?
你看,第一列,是10100011001100.。。這樣的標準數字,能不能將第一列整體看成一個100萬位的數字?=X1
然后第2列看成是第2個數字X2?
這樣看的話,一共有100個數字。

那么我是不是可以這樣理解。
x1+x2+x3.....+x9=W1
x10+x11+..x19=w2

這樣一共有10個W

然后10個W再相加,=Q

那么這個Q就是我所需的。

這樣處理的話,是不是計算量只有100次呢。和100萬次的計算量,比起來。。。。

不知道這樣的思路行不行

uj5u.com熱心網友回復:

就假設把你的“資料”看著是“二維表格”,那這每一個“單元”也是獨立的,
 你并不能直接“把幾個連續單元看作另一個‘整體’”來對待。
不管你是100行、100萬列,還是100萬行、100列,
 就算你“每個單元”的值都是0或1,這每一個“單元”也是至少要占用1個位元組,而不是一個“bit”。

退一萬步說:
 就算你能“把連續的幾個單元看著一個整體”,然而你是要計算“每一行有多少個1”,
   這也要“拆開來統計”,而不能直接得到。
 打個比方說,一個Long型別的整數數值 &H4567ABCD,你要得出“這個數有多少bit位是1”,
 這也得用一系列的代碼檢測每一位是否為1并進行計數,
 據我所知,計算機的“機器指令”也并沒有提供直接的指令取這種結果。

所以說,你14樓所謂的“思路”在這種應用中根本就是行不通的。

uj5u.com熱心網友回復:

參考 15 樓 Chen8013 的回復:
就假設把你的“資料”看著是“二維表格”,那這每一個“單元”也是獨立的,
 你并不能直接“把幾個連續單元看作另一個‘整體’”來對待。
不管你是100行、100萬列,還是100萬行、100列,
 就算你“每個單元”的值都是0或1,這每一個“單元”也是至少要占用1個位元組,而不是一個“bit”。

退一萬步說:
 就算你能“把連續的幾個單元看著一個整體”,然而你是要計算“每一行有多少個1”,
   這也要“拆開來統計”,而不能直接得到。
 打個比方說,一個Long型別的整數數值 &H4567ABCD,你要得出“這個數有多少bit位是1”,
 這也得用一系列的代碼檢測每一位是否為1并進行計數,
 據我所知,計算機的“機器指令”也并沒有提供直接的指令取這種結果。

所以說,你14樓所謂的“思路”在這種應用中根本就是行不通的。


以VB來說
如果有2個數
X1="11011110011101101101000000011111000....."
X2="10000000001111111111111111110000000....."
方法1,回圈
dim w(1000000) as string
for i=1 to len(x1)
    w(i)=val(mid(x1,i,1))+val(mid(x2,i,1))
next i
結果=join(w,"")
方法2,不回圈
結果=X1+X2

你覺得哪種方法比較快呢


uj5u.com熱心網友回復:

一行代碼就是一行指令。
這是匯編時代的思想。
How old are you? 樓主

uj5u.com熱心網友回復:

參考 16 樓 qq_37021087 的回復:
. . . . . . . . . 
以VB來說
如果有2個數
X1="11011110011101101101000000011111000....."
X2="10000000001111111111111111110000000....."
方法1,回圈
dim w(1000000) as string
for i=1 to len(x1)
    w(i)=val(mid(x1,i,1))+val(mid(x2,i,1))
next i
結果=join(w,"")
方法2,不回圈
結果=X1+X2

你覺得哪種方法比較快呢

你這兩個“結果”根本就不是同一個東西,有可比性嗎!

uj5u.com熱心網友回復:

結果一樣的啊。

舉例簡單點來說
X1=10101
X2=11100

用回圈得到法得到的結果是
W=21201

而直接相加的結果
W=X1+X2=21201

uj5u.com熱心網友回復:

參考 19 樓 qq_37021087 的回復:
結果一樣的啊。

舉例簡單點來說
X1=10101
X2=11100

用回圈得到法得到的結果是
W=21201

而直接相加的結果
W=X1+X2=21201

你這兒的10101,11100是你“處理”過的結果,既然這樣,那為什么不把在主樓提出來的問題直接換成1維陣列,每一個元素都是一個100位數?

uj5u.com熱心網友回復:

樓主本質目的是為了加快速度。我倒是有個辦法。樓主把任務劃分到N臺機器上運行,然后綜合。

uj5u.com熱心網友回復:

參考 19 樓 qq_37021087 的回復:
結果一樣的啊。

舉例簡單點來說
X1=10101
X2=11100

用回圈得到法得到的結果是
W=21201

而直接相加的結果
W=X1+X2=21201

你在16樓提到的是“兩個很長的字串”,
而這兒“簡單點”的是“位數很少”的兩個整數而已!
這根本就不是“同一類”的東西,能進行直接比較???


就算是“有限位數”的整數吧,按你在“主貼”中的描述,你得進行“100萬個”或“100個”數的“按位累加”,
請問你能“用一個10進制位”表示100以內的數值(甚至“100萬”以內的數值)???


我看你自己連最根本的“邏輯關系”都沒理清楚吧…………

uj5u.com熱心網友回復:

無profiler不要談效率!!尤其在這個云計算、虛擬機、模擬器、CUDA、多核 、多級cache、指令流水線、多種存盤介質、……滿天飛的時代!

uj5u.com熱心網友回復:

參考 7 樓 qq_37021087 的回復:
Quote: 參考 6 樓 Tiger_Zhao 的回復:

百萬回圈改為一句陳述句(呼叫一個函式)不等于執行的時間就從百萬降到了一。
圖樣圖森破,少年!


我覺得有的內置函式是人家微軟發明出來的,做的肯定比我們自己寫的,要先進好多吧。,,

寫代碼,回圈必不可避免;人家內置的函式確實比我們大部分人寫的效率高很多,估計那是對資料結構和演算法等進行過多次優化的結果,看看人家excel2007,100多萬行,16000多列,那么多的單元格,管理的挺好的。當然,我們也不能妄自菲薄....

不知道你的2維陣列怎么來的,產生資料的時候做一次加法,增加一列還是很簡單的。

uj5u.com熱心網友回復:

可以考慮下CUDA,GPU,ML之類的方向。

uj5u.com熱心網友回復:

確定是二維陣列?或者是其它結構存盤的?

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/65429.html

標籤:網絡編程

上一篇:vb全域熱鍵只監控1個鍵0 大神!!!!!!!!!!

下一篇:vb中怎么用conmand洗掉assess中的一列

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • Git本地庫既關聯GitHub又關聯Gitee

    創建代碼倉庫 使用gitee舉例(github和gitee差不多) 1.在gitee右上角點擊+,選擇新建倉庫 ? 2.選擇填寫倉庫資訊,然后進行創建 ? 3.服務端已經準備好了,本地開始作準備 (1)Git 全域設定 git config --global user.name "成鈺" git c ......

    uj5u.com 2020-09-10 05:04:14 more
  • CODING DevOps 代碼質量實戰系列第二課,相約周三

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。**《DevOps 代碼質量實戰(PHP 版)》**為 CODING DevOps 代碼質量實戰系列的第二課,同時也是本系列的 PHP ......

    uj5u.com 2020-09-10 05:07:43 more
  • 推薦Scrum書籍

    推薦Scrum書籍 直接上干貨,推薦書籍清單如下(推薦有順序的哦) Scrum指南 Scrum精髓 Scrum敏捷軟體開發 Scrum捷徑 硝煙中的Scrum和XP : 我們如何實施Scrum 敏捷軟體開發:Scrum實戰指南 Scrum要素 大規模Scrum:大規模敏捷組織的設計 用戶故事地圖 用 ......

    uj5u.com 2020-09-10 05:07:45 more
  • CODING DevOps 代碼質量實戰系列最后一課,周四發車

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。 **《DevOps 代碼質量實戰(Java 版)》**為 CODING DevOps 代碼質量實戰系列的最后一課,同時也是本系列的 ......

    uj5u.com 2020-09-10 05:07:52 more
  • 敏捷軟體工程實踐書籍

    Scrum轉型想要做好,第一步先了解并真正落實Scrum,那么我推薦的Scrum書籍是要看懂并實踐的。第二步是團隊的工程實踐要做扎實。 下面推薦工程實踐書單: 重構:改善既有代碼的設計 決議極限編程 : 擁抱變化 代碼整潔代碼 程式員的職業素養 修改代碼的藝術 撰寫可讀代碼的藝術 測驗驅動開發 : ......

    uj5u.com 2020-09-10 05:07:55 more
  • Jenkins+svn+nginx實作windows環境自動部署vue前端專案

    前面文章介紹了Jenkins+svn+tomcat實作自動化部署,現在終于有空抽時間出來寫下Jenkins+svn+nginx實作自動部署vue前端專案。 jenkins的安裝和配置已經在前面文章進行介紹,下面介紹實作vue前端專案需要進行的哪些額外的步驟。 注意:在安裝jenkins和nginx的 ......

    uj5u.com 2020-09-10 05:08:49 more
  • CODING DevOps 微服務專案實戰系列第一課,明天等你

    CODING DevOps 微服務專案實戰系列第一課**《DevOps 微服務專案實戰:DevOps 初體驗》**將由 CODING DevOps 開發工程師 王寬老師 向大家介紹 DevOps 的基本理念,并探討為什么現代開發活動需要 DevOps,同時將以 eShopOnContainers 項 ......

    uj5u.com 2020-09-10 05:09:14 more
  • CODING DevOps 微服務專案實戰系列第二課來啦!

    近年來,工程專案的結構越來越復雜,需要接入合適的持續集成流水線形式,才能滿足更多變的需求,那么如何優雅地使用 CI 能力提升生產效率呢?CODING DevOps 微服務專案實戰系列第二課 《DevOps 微服務專案實戰:CI 進階用法》 將由 CODING DevOps 全堆疊工程師 何晨哲老師 向 ......

    uj5u.com 2020-09-10 05:09:33 more
  • CODING DevOps 微服務專案實戰系列最后一課,周四開講!

    隨著軟體工程越來越復雜化,如何在 Kubernetes 集群進行灰度發布成為了生產部署的”必修課“,而如何實作安全可控、自動化的灰度發布也成為了持續部署重點關注的問題。CODING DevOps 微服務專案實戰系列最后一課:**《DevOps 微服務專案實戰:基于 Nginx-ingress 的自動 ......

    uj5u.com 2020-09-10 05:10:00 more
  • CODING 儀表盤功能正式推出,實作作業資料可視化!

    CODING 儀表盤功能現已正式推出!該功能旨在用一張張統計卡片的形式,統計并展示使用 CODING 中所產生的資料。這意味著無需額外的設定,就可以收集歸納寶貴的作業資料并予之量化分析。這些海量的資料皆會以圖表或串列的方式躍然紙上,方便團隊成員隨時查看各專案的進度、狀態和指標,云端協作迎來真正意義上 ......

    uj5u.com 2020-09-10 05:11:01 more
最新发布
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:41:12 more
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:35:34 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:05:44 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:00:18 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:20:31 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:55 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:18:51 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:00 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:17:55 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:12:06 more