30/09/2018, 19:36
String và Array cái nào nhanh hơn trong xử lý số nguyên lớn?
Cho mình hỏi là String và Arry thì cái nào dùng để xử lý số nguyên lớn nhanh hơn.
Bạn mình nói mảng bao giờ cũng nhanh hơn.
Nhưng mình nghĩ bằng nhau, do chỉ thêm 1 bước nhỏ là trừ đi kí tự 0. Ngoài ra string thuật tiện cho việc nhập xuất hơn là mảng.
:?
EDIT: Mảng số nguyên
Ngôn ngữ C
Bài liên quan
Bạn có thể trình bày rõ hơn không? Như là Mảng ở đây là kiểu mảng gì? và String thì có liên quan gì đến việc nhập xuất số lớn
nhập/xuất string thì chỉ cần kiểu
printf("%s",s);
scanf("%s",&s);
còn mảng thì 1 vòng for
Trên phương diện thì đa phần nhập số vào điều là kiểu thuần chủng (hay kiểu nguyên thủy) như int hoặc float tùy theo. Còn String trong c chỉ là cách nói của Một mảng kí tự (char) nên Array số sẽ xử lý đc mọi thứ trên số nguyên còn bạn dùng một mảng kí tự thì việc xử lý sẽ rất khó. Vả là C lại nghèo nàn thư viện sử lý con số trên chuỗi (Java thì nó nhiều hơn) nhưng nói chung là mình kiến nghị dùng Mảng vì chuỗi thì sẽ khó xử lý hơn. Thân ^^
Một mảng sẽ nhanh hơn:
thay vì chọn base=10 như thường làm bạn có thể chọn base=10^6 chẳng hạn. Như vậy chiều dài của mảng sẽ giảm đi khoảng 6 lần. Khi nhân chia, cộng trừ tuỳ thuộc vào dpt của phép tính sẽ giảm tương ứng
Nhuwung mà tại sao lại nhanh hơn hả gió? :?
Cứ nghĩ hoài mà chả ra :’(
để dễ hình dung: lấy vd 2 số cộng với nhau a=1234567 và b=6969696
nếu base=10^6
a biểu diễn[7,123456]
b biểu diễn [6,696969]
nếu base=10
a,b biểu diễn từng kí tự
khi cộng: [7+6,123456+696969]
Còn th 2 bạn phải cộng từng kí tự
Theo mình nghĩ nếu chỉ lưu số nguyên lớn thì String sẽ nhanh hơn nhưng nếu thực hiện các phép toán cộng, trừ, nhân, chia trên số nguyên lớn thì mảng sẽ thuận tiện hơn
Trên ngôn ngữ C không có khái niệm string, mà chỉ có khái niệm mảng ký tự, mà nó tương đương với mảng 1byte, nên bạn không cần phải lăn tăn cái nào nhanh hơn