2012-07-05 14 views
7

những câu dưới đây đã được hỏi trong một cuộc phỏng vấn gần đây microsoftviệc tìm kiếm các trung bình của 5 yếu tố

Với một mảng không được phân loại kích thước 5. bao nhiêu so sánh tối thiểu là cần thiết để tìm ra trung bình? sau đó ông mở rộng nó cho kích thước n.

giải pháp cho 5 yếu tố theo tôi là 6

1) use 3 comparisons to arrange elements in array such that a[1]<a[2] , a[4]<a[5] and a[1]<a[4] 
a) compare a[1] and a[2] and swap if necessary 
b) compare a[4] and a[5] and swap if necessary 
c) compare a[1] and a[4].if a[4] is smaller than a[1] , then swap a[1] wid a[4] and a[2] wid a[5] 
2)if a[3]>a[2].if a[2]<a[4] median value = min(a[3],a[4]) else median value=min(a[2],a[5]) 
3)if a[3]<a[2].if a[3]>a[4] median value = min(a[3],a[5]) else median value=min(a[2],a[4]) 

này có thể được mở rộng đến các yếu tố n. nếu không làm thế nào chúng ta có thể tìm thấy trung vị trong các phần tử n trong O (n) ngoài việc chọn nhanh

+1

Bạn có thể muốn cải thiện đánh dấu đó một chút. Có một danh sách có thứ tự ('1.') bạn có thể sử dụng và chúng cũng làm tổ. – Flexo

+0

@akash: chấp nhận câu trả lời cho các câu hỏi khác của bạn (nghĩa là, nhấp vào 'dấu kiểm màu xanh' nếu câu trả lời đã trả lời câu hỏi của bạn). – Claudiu

+0

@Claudiu thanx. – akash

Trả lời

4

Thuật toán chọn chia danh sách thành các nhóm gồm năm phần tử. Sau đó, đối với mỗi nhóm năm, trung bình được tính toán (một hoạt động có khả năng có thể được thực hiện rất nhanh nếu năm giá trị có thể được nạp vào sổ đăng ký và so sánh - 6 so sánh min). Chọn sau đó được gọi là đệ quy trên danh sách con này của n/5 yếu tố để tìm trung bình thực sự của chúng.

+0

Tôi không thể hiểu những gì "tải vào sổ đăng ký" có nghĩa là, ai đó có thể vui lòng giải thích? – Dimath