NEW
Font size
WorksheetsData chương 2 p1
Total questions: 27
Worksheet time: 14mins
Chọn đáp án đúng để nói về ý tưởng của phương pháp sắp xếp chèn (Insertion Sort)
Chèn mỗi khóa vào đúng thứ tự trong một dãy con đã được sắp xếp của dãy cần sắp xếp.
Chèn mỗi khóa vào một dãy con chưa được sắp xếp của dãy cần sắp xếp.
Chèn mỗi khóa vào một dãy con chưa được sắp xếp của dãy cần sắp xếp.
Chèn mỗi khóa vào cuối (đầu) một dãy con đã được sắp xếp của dãy cần sắp xếp.
Phần tử có thể được chọn làm chốt trong phương pháp Quick Sort là phần tử như thế nào (chọn câu trả lời đúng nhất)?
Giữa dãy
Đầu dãy
Cuối dãy
Phần tử ngẫu nhiên
Hai phần tử như thế nào thì được đổi chỗ cho nhau trong mỗi bước của phương pháp nổi bọt ?
Hai phần tử bất kỳ, ngược thứ tự.
Hai phần tử cạnh nhau, ngược thứ tự
Phần tử đầu dãy và cuối dãy, ngược thứ tự
Phương pháp tìm kiếm nhị phân không thực hiện được khi nào?
Khi không có phần tử cần tìm trong dãy
Khi không có phần tử cần tìm trong dãy
Khi dãy không có thứ tự
Hàm mô tả thuật toán sắp xếp nổi bọt (Bubble Sort) trên mảng M có N phần tử. Lệnh nào sau đây sẽ được đưa vào dòng lệnh thứ 8 của thủ tục ?
M[j]=temp;
temp=M[j-1];
temp=M[j];
M[j]=M[j];
Trường hợp xấu nhất của thuật toán sắp xếp chèn là ?
Dãy có thứ tự thuận (Cùng thứ tự với thứ tự cần sắp)
Dãy có thứ tự ngược với thứ tự cần sắp
Dãy bất kỳ
Thuật toán tìm kiếm nhị phân dừng lại khi nào ?
A. Khi tìm thấy giá trị mong muốn
B. Khi không tìm thấy ở bước nào đó
C. Khi dãy đang xét trở nên rỗng (hết dãy)
Cả A, C đều đùng
Chọn 1 câu lệnh sau để đưa vào dòng lệnh thứ [5] trong đoạn chương trình sau
j=i+1
j=i
j=j+1
a[min]=i;
Cho dãy số {9,8,7,2,12,3,10,11,8,9,2}. Kết quả ở mỗi bước sắp xếp dãy số như sau, cho biết Dãy trên được sắp theo phương pháp sắp xếp nào?
Chọn trực tiếp
Chèn trực tiếp
Nổi bọt
Đổi chỗ trực tiếp
Tại bước thứ i của phương pháp sắp xếp nổi bọt, sau khi đổi chỗ 2 phần tử ngược thứ tự là a[j], a[j-1] thì… ?
Kết thúc 1 bước sắp xếp.
Tiếp tục tiến về phía đầu dãy và lặp lại việc đổi chỗ nếu a[j], a[j-1] ngược thứ tự cho đến khi gặp vị trí đầu tiên thì dừng
Tiếp tục tiến về phía đầu dãy và lặp lại việc đổi chỗ nếu a[j], a[j-1] ngược thứ tự cho đến khi gặp vị trí i thì dừng.
Đổi chỗ tiếp a[i] và a[j]
Các bước tìm kiếm sau là của phương pháp tìm kiếm nào?
B1: k = 0
B2: M[N] = X
B3: IF M[k] ≠ X
B3.1: k++
B3.2: Lặp lại B3
B4: IF k < N
Tìm thấy tại vị trí k
B5: ELSE
Không tìm thấy phần tử có giá trị X
B6: Kết thúc
Linear Search (tuần tự)
Binary Search (nhị phân)
Linear Search and Binary Search
Trường hợp tốt nhất của phương pháp tìm kiếm tuần tự là…?
Phần tử trùng X ở giữa dãy
Tìm thấy phần tử trùng X
Phần tử trùng X ở vị trí đầu dãy
Không tìm thấy phần tử nào trùng X
Cho đoạn chương trình sắp xếp nổi bọt sau:
[1]void BubleSort(int a[], int N )
[2]{
int i, j;
[3] for (i = 0 ; i<N-1 ; i++)
[4] ……………………………………………………..
[5] if(a[j]< a[j-1]) // nếu sai vị trí thì đổi chỗ
[6] Hoanvi(a[j],a[j-1]);
[7]}
Dòng lệnh nào sau đây được chọn để đưa vào dòng thứ 4 trong đoạn chương trình trên?
for (j =N-1; j >i ; j ++)
for (j =N-1; j <i ; j --)
for (j =N; j >i ; j ++)
for (j =N-1; j >i ; j --)
Đoạn chương trình sau làm công việc gì?
int TK(int M[], int N, int X){
M[N]=X;
int k=0;
while(M[k] != X)
k++;
if(k < N)
return k;
else
return -1;
}
Tìm kiếm phần tử M trong dãy A bằng phương pháp tìm kiếm tuần tự
Duyệt mảng M bằng phương pháp nhị phân
Tìm kiếm phần tử X trong dãy M bằng phương pháp tìm kiếm nhị phân
Duyệt mảng M bằng phương pháp tuần tự
Cho các bước sắp xếp như sau:
Bước 1 : i = 1; // lần xử lý đầu tiên
Bước 2 : j = N; //Duyệt từ cuối dãy ngược về vị trí i
Trong khi (j > i) thực hiện:
Nếu a[j]<a[j-1]: a[j]đổi chỗ a[j-1];
j = j-1;
Bước 3 : i = i+1; // lần xử lý kế tiếp
Nếu i>N-1: Hết dãy. Dừng
Ngược lại : Lặp lại Bước 2.
Các bước sắp xếp trên là của phương pháp sắp xếp nào ?
Merge Sort
Selection Sort
Bubble Sort
Quick Sort
Phương pháp tìm kiếm nhị phân áp dụng hiệu quả hơn tìm kiếm tuần tự khi nào?
Khi dãy có thứ tự tăng
Khi dãy có thứ tự giảm
Khi dãy được sắp theo 1 thứ tự nào đó
Khi dãy không được sắp thứ tự
Điều kiện để áp dụng phương pháp tìm kiếm nhị phân là gì?
Dãy ban đầu chưa có thứ tự
Dãy ban đầu được chia thành 2 nửa
Dãy ban đầu đã được sắp thứ tự
Đoạn chương trình sau thể hiện thuật toán sắp xếp gì?
void Sort(int a[], int N ){
int pos, i;
int x; // bo nho tam
for(int i=1 ; i<N ; i++)
{
x = a[i]; pos = i-1;
while((pos >= 0)&&(a[pos] > x))
{
a[pos+1] = a[pos];
pos--;
}
a[pos+1] = x;// chen x vao day
}
}
Chèn trực tiếp
Nổi bọt
Sắp xếp nhanh
Chọn trực tiếp
Tại bước thứ i của phương pháp sắp xếp nổi bọt, sau khi đổi chỗ 2 phần tử ngược thứ tự là a[j], a[j-1] thì… ?
Kết thúc 1 bước sắp xếp.
Tiếp tục tiến về phía đầu dãy và lặp lại việc đổi chỗ nếu a[j], a[j-1] ngược thứ tự cho đến khi gặp vị trí đầu tiên thì dừng
Tiếp tục tiến về phía đầu dãy và lặp lại việc đổi chỗ nếu a[j], a[j-1] ngược thứ tự cho đến khi gặp vị trí i thì dừng.
Đổi chỗ tiếp a[i] và a[j]
Dòng lệnh [7] trong đoạn code chương trình sau dùng để làm gì?
void SelectionSort(int a[], int N ){
[1] int min_idx;
[2] int tmp;
[3] for (int i=0; i<N-1 ; i++){
[4] min_idx = i;
[5] for(int j = i+1; j <N ; j++)
[6] if (a[j] < a[min_idx])
[7] min_idx = j;
[8] tmp=a[i];
[9] a[i]=a[min_idx];
[10] a[min_idx]=tmp;
}
}
Lưu giá trị nhỏ nhất vào biến min
Tìm giá trị nhỏ nhất
Lưu vị trí phần tử nhỏ nhất hiện tại vào biến min
Các bước sắp xếp sau là của phương pháp sắp xếp nào
Bước 1: i = 1; //giả sử có đoạn a[0] đã được sắp
Bước 2: x = a[i]; // Tìm vị trí pos thích hợp từ a[0] đến a[i-1] để chèn a[i] vào
Bước 3: Dời các phần tử từ a[pos] đến a[i-1] sang phải 1 vị trí để dành chổ cho a[i]
Bước 4: a[pos] = x; // có đoạn a[0]..a[i] đã được sắp
Bước 5: i = i+1; Nếu i < n : Lặp lại Bước 2. Ngược lại: Dừng
Nổi bọt
Chèn trực tiếp
Chọn trực tiếp
Phương pháp tìm kiếm tuần tự xuất phát từ phần tử nào của dãy?
Đầu dãy
Giữa dãy
Phần tử bất kỳ
Phần tử trung vị của dãy
Trong trường hợp tốt nhất thuật toán sắp xếp chọn (Selection Sort) sử dụng bao nhiêu phép so sánh để sắp xếp 1 dãy có n phần tử?
n-1
n
n/2
n.(n-1)/2
Cho dãy số sau có 9 phần tử: 12 4 20 11 15 27 17 9 13
Sử dụng phương pháp sắp xếp chọn (Selection Sort) để sắp xếp dãy này theo thứ tự không giảm. Khi kết thúc bước thứ 2 thì phần tử có giá trị 9 ở vị trí thứ mấy (vị trí của các phần tử trong dãy bắt đầu từ 1)?
1
2
3
4
Khóa (giá trị) được chọn để so sánh với giá trị cần tìm kiếm trong thuật toán Binary Searching là ?
Chọn ngẫu nhiên
Ở vị trí đầu dãy
Ở vị trí giữa dãy
Ở vị trí cuối dãy
Giả sử cần tìm giá trị X trong dãy khóa K được sắp theo thứ tự giảm dần bằng phương pháp tìm kiếm nhị phân. Nếu X>K[m] thì bước tiếp theo sẽ tìm X như thế nào ?
Từ vị trí m+1 trở về sau
Từ vị trí m-1 trở về trước
Từ vị trí m trở về trước
Từ vị trí m trở về sau
lệnh nào sau đây có thể được chọn để đưa vào dấu ….trong dòng lệnh [9] của đoạn chương trình sắp xếp chèn sau?
void Sort(int a[], int N ){
[1]int pos, i;
[2]int x; // bo nho tam
[3]for(int i=1 ; i<N ; i++){
[4]x = a[i]; pos = i-1;
[5]while((pos >= 0)&&(a[pos] > x)){
[6]a[pos+1] = a[pos];
[7]pos--;
[8]}
[9]......... // chen x vao day
}
}
x = a[pos+1];
a[pos+1] = x;
a[pos] = x;
