- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
Edit3:通过将数组的初始化限制为仅奇数进行优化。谢谢@Ronnie!
Edit2:谢谢大家,看来我也无能为力了。
编辑:我知道 Python 和 Haskell 是用其他语言实现的,并且或多或少地执行了与我下面相同的操作,并且编译的 C 代码将在任何时候击败它们。我只是想知道标准 C(或任何库)是否有内置函数可以更快地执行此操作。
我正在使用 Eratosthenes 算法在 C 中实现素数筛法,并且需要初始化从 0 到 N 的任意大小 N 的整数数组。我知道在 Python 中你可以这样做:
integer_array = range(n)
就是这样。或者在 Haskell 中:
integer_array = [1..n]
但是,我似乎找不到用 C 实现的类似方法。我想出的解决方案是初始化数组,然后对其进行迭代,然后将每个值分配给索引,但感觉难以置信效率低下。
int init_array()
{
/*
* assigning upper_limit manually in function for now, will expand to take value for
* upper_limit from the command line later.
*/
int upper_limit = 100000000;
int size = floor(upper_limit / 2) + 1;
int *int_array = malloc(sizeof(int) * size);
// debug macro, basically replaces assert(), disregard.
check(int_array != NULL, "Memory allocation error");
int_array[0] = 0;
int_array[1] = 2;
số nguyên i;
for(i = 2; i < size; i++) {
int_array[i] = (i * 2) - 1;
}
// checking some arbitrary point in the array to make sure it assigned properly.
// the value at any index 'i' should equal (i * 2) - 1 for i >= 2
printf("%d\n", int_array[1000]); // should equal 1999
printf("%d\n", int_array[size-1]); // should equal 99999999
free(int_array);
trả về 0;
lỗi:
trả về -1;
}
有更好的方法吗? (不,显然没有!)
câu trả lời hay nhất
The solution I've come up with initializes the array and then iterates over it, assigning each value to the index at that point, but it feels incredibly inefficient.
你或许可以减少代码行数,但我认为这与“效率”没有任何关系。
虽然在 Haskell 和 Python 中只有一行代码,但幕后发生的事情与您的 C 代码所做的是一样的(在最好的情况下;它的性能可能会更差,具体取决于它的实现方式)。
有标准库函数可以用常量值填充数组(可以想象它们可以表现得更好,尽管我不会打赌),但这在这里不适用。
关于C 用对应于索引的值初始化一个(非常)大的整数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17800456/
Cập nhật: Vui lòng phản đối tôi vì vấn đề là tôi đã đặt tên tệp là _stylesheet.html.erb thay vì _stylesheets.html.erb. Tôi nghĩ tôi đã kiểm tra chính tả của mình, nhưng có vẻ như tôi đã không làm vậy. Tôi xin lỗi vì đã làm lãng phí thời gian của mọi người
Tôi có một trình cài đặt Inno Script đang chạy sub-setup.exe trong đó. Khi cung cấp các tham số cài đặt im lặng cho trình cài đặt chính, tôi phải cung cấp các tham số cài đặt im lặng cho setup.exe. Lệnh chạy tập lệnh Inno: [R
Tôi đang cố gắng tìm kiếm các chuỗi con dài và gần đúng trong cơ sở dữ liệu lớn. Ví dụ: một truy vấn có thể là một chuỗi con 1000 ký tự có thể khác với kết quả khớp hàng trăm khoảng cách Levenshtein đã chỉnh sửa. Tôi nghe nói lập chỉ mục q-gram có thể làm được điều đó
Tôi đang cố triển khai Chế độ xem bản vẽ rất đơn giản trong ứng dụng của mình. Đây chỉ là một phần nhỏ trong đơn đăng ký của tôi nhưng nó đang thực sự trở thành một rắc rối. Đây là những gì tôi có cho đến nay, nhưng tất cả những gì nó hiển thị bây giờ là mã morse như dấu chấm và dòng. -(v
Tôi có một truy vấn sql đang chạy rất chậm và tôi không hiểu tại sao. Truy vấn là: SELECT DISTINCT(c.ID),c.* FROM `content` c LEFT JOIN `content_meta`
Tôi đã tìm kiếm điều này nhưng tất cả các kết quả tôi tìm thấy đều vô nghĩa đối với tôi và có vẻ quá phức tạp. Tôi muốn sử dụng mô-đun json hoặc simplejson để lấy giá trị của một chuỗi trong một đối tượng. chuỗi = '{"tên": "Alex"}
Tôi muốn viết một trình tạo lưu lượng sao chép các yêu cầu đọc và ghi thô trên bộ nhớ từ một máy tính đang chạy. Nhưng máy tính đang chạy cũng hiển thị vị trí (rất mạnh) trong các tham chiếu bộ nhớ của nó và trong không gian địa chỉ 64 bit, chỉ một phạm vi địa chỉ rất nhỏ sẽ được tham chiếu (trên thực tế, tôi có
Tôi đang cố gắng giải một bài toán Project Euler nhưng nó liên quan đến việc cộng một số vào một số rất lớn. (100!) Int và long trong Java quá nhỏ. Cảm ơn gợi ý về câu trả lời hay nhất, lớp BigInteger có vẻ như có thể
Tôi muốn triển khai một công cụ vật lý trong trò chơi của mình để tính toán quỹ đạo của các vật thể khi lực tác dụng lên chúng. Engine sẽ tính toán từng trạng thái của một đối tượng dựa trên trạng thái trước đó của nó. Tất nhiên, điều này có nghĩa là thực hiện nhiều phép tính giữa hai đơn vị thời gian để đủ chính xác. Để làm điều này một cách chính xác, trước tiên tôi muốn biết
Chỉnh sửa3: Được tối ưu hóa bằng cách giới hạn việc khởi tạo mảng chỉ ở số lẻ. Cảm ơn @Ronnie! Edit2: Cảm ơn mọi người, có vẻ như tôi không thể làm gì được. EDIT: Tôi biết rằng Python và Haskell được triển khai bằng các ngôn ngữ khác và ít nhiều
Bối cảnh Tôi có một máy khách/máy chủ phương tiện đơn giản mà tôi đã viết và tôi muốn tạo một giá trị thời gian không rõ ràng mà tôi gửi từ máy khách đến máy chủ bằng mỗi lệnh. Dấu thời gian sẽ chứa khá nhiều dữ liệu (độ phân giải nano giây, mặc dù nó không thực sự
Một người bạn đang tuyển dụng kỹ sư phần mềm muốn tôi phát triển một ứng dụng cho anh ấy. Anh ấy muốn có thể tìm kiếm hồ sơ ứng viên dựa trên kỹ năng. Như bạn có thể tưởng tượng, có hàng trăm, có thể hàng nghìn kỹ năng. Cách tốt nhất để đại diện cho các ứng cử viên trong một bảng là gì? Tôi đang nghĩ về kỹ năng
Ý tôi là "chậm" là loại gọi lại đợi máy chủ từ xa hết thời gian chờ để kích hoạt hiệu quả (gọi nguồn cấp dữ liệu vimeo, phân tích cú pháp, sau đó hiển thị uiviews trong cảnh) Tôi hầu như không hiểu cách thức hoạt động của nó. Tôi muốn Chế độ xem của tôi được điền từ cuộc gọi lại ngay khi phản hồi được trả về
Xin chào, tôi đang xem xét sử dụng hàng đợi người tiêu dùng của nhà sản xuất nhanh chóng và đáng tin cậy để chuyển đổi luồng. Tôi đang làm việc trên Windows bằng VC++. Thiết kế của tôi dựa trên hàng đợi Anthony Williams, về cơ bản là hàng đợi có boost::c
Tôi chỉ thắc mắc về trải nghiệm của bạn với tính năng chia sẻ lại. Chúng tôi có một tệp dbml rất nặng vì cơ sở dữ liệu của chúng tôi có rất nhiều bảng và mỗi lần tôi cần mở tệp, tôi nhận được rất nhiều ngoại lệ từ trình chia sẻ lại. Có ai gặp phải điều này trước đây?
Tôi hiện đang sử dụng chức năng ẩn/hiển thị trong jQuery để giúp lọc các bảng thành các nhóm từ hộp chọn. Mã thực tế chạy tốt nhưng rất chậm, đôi khi phải mất một hoặc hai phút để thực thi. Tôi đã chuyển mã để nó sử dụng css({'display':'
Tôi đã gọi hai phương thức sau theo thứ tự (sử dụng các trường cấp lớp thích hợp theo thứ tự) public const string ProcessName = "This is" public const string WindowT
Tôi đang gặp khó khăn trong việc hiểu tài liệu/ví dụ mô tả gói phản ánh. Tôi là người kỳ cựu về lập trình mệnh lệnh, nhưng mới làm quen với Haskell. Bạn có thể hướng dẫn tôi một cách giới thiệu rất đơn giản được không? Gói: https://hackage.haskell.org/pack
Đã đóng cửa. Câu hỏi này không tuân thủ nguyên tắc Stack Overflow. Câu trả lời không được chấp nhận vào thời điểm này. Các câu hỏi yêu cầu chúng tôi giới thiệu hoặc tìm các công cụ, thư viện hoặc tài nguyên bên ngoài trang web yêu thích đều không có chủ đề đối với Stack Overflow vì
Tôi đang cố gắng viết một đoạn mã để thao tác với một tài liệu rất dài (hơn một triệu dòng). Trong tệp văn bản này, có các khoảng cố định (cứ sau 1003 dòng) và các dấu thời gian nhất định ở giữa có dữ liệu tôi cần, nó dài 1000 dòng, có tiêu đề và hai dòng trống nhưng tôi không cần.
Tôi là một lập trình viên xuất sắc, rất giỏi!