Diễn đàn hỏi đáp học thuật - Download Tài Liệu Miễn Phí
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Diễn đàn hỏi đáp học thuật - Download Tài Liệu Miễn PhíĐăng Nhập

VỮNG TIN - TIẾP BƯỚC - THÀNH CÔNG


descriptionĐánh giá độ phức tạp của hàm Selection Sort EmptyĐánh giá độ phức tạp của hàm Selection Sort

more_horiz

Code:

void SelectionSort(int A[],int n) {
    int min;
    for(int i=0; i<n-1; i++) {
          min = i;
          for(int j=i+1; j<n; j++)
          if(A[min]>A[j])
          min = j;
          if(min != i)
                Swap(A[i],A[min]);
          }
}


Trong hàm Selection Sort, có gọi thủ tục Swap ta dễ thấy rằng hàm Swap có 3lệnh gán nên thời gian thực hiện là O(1).
Trong Selection Sort lệnh gọi Swap nên chỉ tốn O(1), dòng for thứ 2 thực hiện n-i lần, mỗi lần thực hiện tốn O(1) nên tốn O (n-i) và đây cũng là độ phức tạp của hàm:
T(n) =∑_(i=1)^(n-1)▒(n-i) = (n(n-1))/2 = O(n^2)


descriptionĐánh giá độ phức tạp của hàm Selection Sort EmptyĐánh giá độ phức tạp ham Insertion sort

more_horiz
Bài tập nhóm hai:

Code:

void Insetion sort (int a[], int n){
1. for (int i=1; i< 0; i++)
2.        for (int j=i; j>0; j--)
3.          if (A[j]<a[j-1])
4.                swap (A[j],A[j-1]);
  }

Câu lệnh (4) thực hiện O(1) câu lệnh (3) thực hiện O(1), cả hai câu lệnh thực hiện O(1+1)=O(1)
Câu lệnh (2) thực hiện 1 lần
Câu lệnh (1) thực hiện n-1 lần
T(n)=∑i=1+2+…..+n-1=[n(n-1)]/2
Vậy độ phức tạp của thuật toán là O(n^2)

descriptionĐánh giá độ phức tạp của hàm Selection Sort EmptyNhập Xuất Đa Giác n đỉnh

more_horiz

Code:

#include<stdio.h>
#include<conio.h>
int SoDiem;
typedef struct{
   int x;
   int y;
}Diem;
//Nhap diem
void Nhap(Diem diem[],int SoDiem){
   for(int i=1;i<=SoDiem;i++){
      printf("Nhap diem thu %d \n",i);
      printf("Nhap x= \t");
      scanf("%d",&diem[i].x);
      printf("Nhap y= \t");
      scanf("%d",&diem[i].y);
   }
}
//Xuat diem
void Xuat(Diem diem[],int i){
   printf("x= %d\t",diem[i].x);
   printf("y= %d\t",diem[i].y);
}
//Tim hoanh do lon nhat
int Max_x(Diem diem[20]){
   int max;
   for(int i=1;i<=SoDiem;i++){
      if(diem[i].x>diem[i-1].x)
         max=i;
      else
         max=i-1;
   }
   return max;
}
//Tim tung do lon nhat
int Max_y(Diem diem[20]){
   int max;
   for(int i=2;i<=SoDiem;i++){
      if(diem[i].y>diem[i-1].y)
         max=i;
      else
         max=i-1;
   }
   return max;
}
void main(){
   Diem diem[20];
   int t;
   printf("So diem can nhap ");
   scanf("%d",&SoDiem);
   Nhap(diem,SoDiem);
   printf("Diem co hoanh do lon nhat la:\n");
   Xuat(diem,Max_x(diem));
   printf("\nDiem co tung do lon nhat la:\n");
   Xuat(diem,Max_y(diem));
   printf("\nDiem can tim: ");
   scanf("%d",&t);
   Xuat(diem,t);
        getch();
}

descriptionĐánh giá độ phức tạp của hàm Selection Sort EmptyRe: Đánh giá độ phức tạp của hàm Selection Sort

more_horiz
duongvandeoit1k10 đã viết:

Code:

void SelectionSort(int A[],int n) {
    int min;
    for(int i=0; i<n-1; i++) {
          min = i;
          for(int j=i+1; j<n; j++)
          if(A[min]>A[j])
          min = j;
          if(min != i)
                Swap(A[i],A[min]);
          }
}


Trong hàm Selection Sort, có gọi thủ tục Swap ta dễ thấy rằng hàm Swap có 3lệnh gán nên thời gian thực hiện là O(1).
Trong Selection Sort lệnh gọi Swap nên chỉ tốn O(1), dòng for thứ 2 thực hiện n-i lần, mỗi lần thực hiện tốn O(1) nên tốn O (n-i) và đây cũng là độ phức tạp của hàm:
T(n) =∑_(i=1)^(n-1)▒(n-i) = (n(n-1))/2 = O(n^2)




===============================================
Thầy ơi sao thầy hông cho nhận xét bài làm của em vây? Em làm thế có đúng không ạ?

descriptionĐánh giá độ phức tạp của hàm Selection Sort EmptyRe: Đánh giá độ phức tạp của hàm Selection Sort

more_horiz
duongvandeoit1k10 đã viết:

Code:

void SelectionSort(int A[],int n) {
    int min;
    for(int i=0; i<n-1; i++) {
          min = i;
          for(int j=i+1; j<n; j++)
          if(A[min]>A[j])
          min = j;
          if(min != i)
                Swap(A[i],A[min]);
          }
}

Em làm bài này vầy nè thầy xem có đúng không thầy
lenh Swap= O(1)lồng trong lệnh if ma if cũng O(1) nên 2 câu lệnh bằng O(1).
if va min cung bang O(1)
for thi bằng O(n-i-1)
lồng trong dòng for cua i ma for cua i = O(n-1)
T(n)=O((n-i-1)*(n-1))=O(n^2-in-2n+i+1). Mà i đi đến n-2 nên T(n)=O(n^2-n(n-2)-2n+n-2+1)=O(n-1)
Vậy đúng không thầy.

descriptionĐánh giá độ phức tạp của hàm Selection Sort EmptyRe: Đánh giá độ phức tạp của hàm Selection Sort

more_horiz
privacy_tip Permissions in this forum:
Bạn không có quyền trả lời bài viết
power_settings_newLogin to reply