Forum sinh viên K55CC - UET
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.
Forum sinh viên K55CC - UET

Sinh viên K55CC - Đại học Công Nghệ
 
Trang ChínhTrang Chính  Portal*Portal*  Latest imagesLatest images  Đăng kýĐăng ký  Đăng Nhập  

 

 Thảo luận về các lab CTDL&GT

Go down 
+3
DEV.CENTER
Admin
onlyesterday
7 posters
Chuyển đến trang : 1, 2  Next
Tác giảThông điệp
onlyesterday
Moderator
Moderator
onlyesterday


Tổng số bài gửi : 76
Votes : 2
Join date : 14/09/2011
Age : 30
Đến từ : LAPUTA

Thảo luận về các lab CTDL&GT Empty
Bài gửiTiêu đề: Thảo luận về các lab CTDL&GT   Thảo luận về các lab CTDL&GT EmptySun Sep 18, 2011 9:54 am

tình hình là mọi người vào năm học mới rồi.. thảo luận sôi nổi quá.. thảo luận trên face thì ko giữ đc lâu mà khó trình bày code nên chuyển vào đây nhé..
Về Đầu Trang Go down
onlyesterday
Moderator
Moderator
onlyesterday


Tổng số bài gửi : 76
Votes : 2
Join date : 14/09/2011
Age : 30
Đến từ : LAPUTA

Thảo luận về các lab CTDL&GT Empty
Bài gửiTiêu đề: Re: Thảo luận về các lab CTDL&GT   Thảo luận về các lab CTDL&GT EmptySun Sep 18, 2011 9:56 am

đầu tiên là lab01 đang bàn về độ phức tạp của mỗi cách ở bài ReadNum... tâm điểm đang là mấy vụ sort.. mọi người cho ý kiến cười nhăn răng
Về Đầu Trang Go down
Admin
Admin
Admin
Admin


Tổng số bài gửi : 80
Votes : 7
Join date : 14/09/2011
Age : 32
Đến từ : Hải Dương, Việt Nam

Thảo luận về các lab CTDL&GT Empty
Bài gửiTiêu đề: Re: Thảo luận về các lab CTDL&GT   Thảo luận về các lab CTDL&GT EmptyMon Sep 19, 2011 1:45 am

Mình tính nhập cả dãy số vào mảng (tuy hơi tốn dữ liệu chút! cười nhăn răng) , sau đó loại bỏ các số trùng nhau trong dãy rồi sắp xếp tăng dần (giảm dần)... Các bạn có cách nào nhanh hơn thì chỉa sẻ nha! Mình rửa tai nghe giảng rồi đây...
Code:


#include <iostream>
#include <conio.h>
#include <fstream>
using namespace std;
int main() {
   ifstream is("DAYSO1.txt");
   long n, temp;
   is >> n;
   //Size of list
   long *list;
   list = new long [n];
   //Read list of number in file
   for(int i = 0;i < n;i++)
      is >> list[i];
   //Remove the same elements of list
   for (int i = 0; i < n-1 ; i++) {
        for (int j = i+1 ; j < n; j++) {         
            if (list[i] == list[j]) {
                for (int k = j+1; k < n; k++)
                    list[k-1] = list[k];
            n--;
            j--;
            }         
        }
    }
    //Sort list
    for(int i = 0;i < n-1;i++) {
      for(int j = i;j < n;j++) {
         if(list[i] > list[j]) {
            temp = list[i];
            list[i] = list[j];
            list[j] = temp;
         }
      }
   }
   //
   cout << "So nguyen lon nhat cua day la: " << list[n-1] << "\n";
   cout << "So nguyen lon thu 2 cua day la: " << list[n-2] << "\n";
   
   long k;
   cout << "Nhap k: ";
   cin >> k;
   cout << "\nSo lon thu " << k << " cua day la: " << list[n-k] << "\n";
   is.close();
   cout << "\nFinish";
   getch();
   return 0;
}

Mong các mem chỉ giáo! :=D>:


Được sửa bởi Admin ngày Tue Sep 20, 2011 6:51 pm; sửa lần 1.
Về Đầu Trang Go down
https://svk55cc.forum-viet.com
DEV.CENTER
Thành viên tích cực
Thành viên tích cực
DEV.CENTER


Tổng số bài gửi : 118
Votes : 13
Join date : 15/09/2011
Age : 30
Đến từ : The Torchwood Universe

Thảo luận về các lab CTDL&GT Empty
Bài gửiTiêu đề: Re: Thảo luận về các lab CTDL&GT   Thảo luận về các lab CTDL&GT EmptyMon Sep 19, 2011 8:11 am

độ phức tạp là bao nhiêu vậy bác... t thấy hềnh như cũng là O(n^2)
Về Đầu Trang Go down
Admin
Admin
Admin
Admin


Tổng số bài gửi : 80
Votes : 7
Join date : 14/09/2011
Age : 32
Đến từ : Hải Dương, Việt Nam

Thảo luận về các lab CTDL&GT Empty
Bài gửiTiêu đề: Re: Thảo luận về các lab CTDL&GT   Thảo luận về các lab CTDL&GT EmptyMon Sep 19, 2011 10:12 am

Mình nghĩ là nhiều hơn đó... Trong chuỗi lệnh để loại bỏ các số trùng nhau hình như đã lên tới (n-1)*(n-1)! chóng mặt
Về Đầu Trang Go down
https://svk55cc.forum-viet.com
xuyenit55
Moderator
Moderator
xuyenit55


Tổng số bài gửi : 12
Votes : 3
Join date : 14/09/2011
Age : 32

Thảo luận về các lab CTDL&GT Empty
Bài gửiTiêu đề: Re: Thảo luận về các lab CTDL&GT   Thảo luận về các lab CTDL&GT EmptyMon Sep 19, 2011 1:33 pm

theo em 3 vòng for lồng nhau thế kia thì độ phức tạp là 0(n^3 ) ạ ! cười nhăn răng
thuật toán của em sử dụng phương pháp đếm phân phối với độ phức tạp là 0(n) ! nhưng chỉ nên áp dụng với trường hợp các số nguyên có khoảng cách nhỏ hơn thôi ! nếu mà rơi vào trường hợp mảng có 2 phần tử ví như là 1 và 2000 thì em ko dám áp dụng a! cười ngoác miệng
code demo đây nhưng mà bài của em chẳng biết tại sao thỉnh thoảng chạy nó lại lỗi runtime ,thôi tối về em sửa lại cho hoàn chỉnh ! ai có ý kiến ji cứ chém cho em với ! cười nhăn răng
còn cach khác cũng đơn giản mà độ phức tạp là 0(nlogn) đó là dùng quicksort rồi loại bỏ số phần tử giống nhau , chắc bọn mình có mấy nghìn phần tử thì sử dụng cái này vẫn là ok ! cười nhăn răng

Code:

#include<iostream>
#include<stdlib.h>

using namespace std;

int main()
{
   
    
     int n =0 , a[100],c[100] , m = 0 , f = 0 , b[100] , t = 0  , k;
     // sinh so ngau nhien cua n va mang cua a
    
     srand((unsigned)time(NULL));
     n = rand()%10+3;
     for ( int  i = 0 ; i < n ; i++){
        a[i] = rand() %10;
        cout << a[i] << " , ";
      
     }
     int max = 0 ; max  = a[0];
     for ( int  i = 1 ; i < n ; i++){
      
          if ( max < a[i] ) max = a[i];
     }
     // c  = new int [max];
     for ( int i = 0 ; i < max ; i++)
     {
          c[i] = 0;
     }
     for (  int i = 0 ; i < max ; i++)
     {
         c[a[i]] +=1;
     }
     cout << "\nnhap k = " ;
     cin >> k;
     for (  int j = 0 ; j < max ; j++)
     {
         if ( c[j] != 0)
         {
            b[t] = j;
         
             if ( (t+1) == k)
             {
               
               cout << "\nPhan tu lon thu " << k << " la : " << b[t] << endl;
            }
         
           t++;
         }
     }
     system("pause");
     return 0;
}
    
   
    
Về Đầu Trang Go down
Admin
Admin
Admin
Admin


Tổng số bài gửi : 80
Votes : 7
Join date : 14/09/2011
Age : 32
Đến từ : Hải Dương, Việt Nam

Thảo luận về các lab CTDL&GT Empty
Bài gửiTiêu đề: Re: Thảo luận về các lab CTDL&GT   Thảo luận về các lab CTDL&GT EmptyMon Sep 19, 2011 4:52 pm

Mình cũng định sử dụng quicksort nhưng hơi ngại phần đệ quy... Vì mình cũng chưa tính chuyện tính đọ phức tạp của chúng vì hơi khó nhằn... cười nhăn răng
Về Đầu Trang Go down
https://svk55cc.forum-viet.com
onlyesterday
Moderator
Moderator
onlyesterday


Tổng số bài gửi : 76
Votes : 2
Join date : 14/09/2011
Age : 30
Đến từ : LAPUTA

Thảo luận về các lab CTDL&GT Empty
Bài gửiTiêu đề: Re: Thảo luận về các lab CTDL&GT   Thảo luận về các lab CTDL&GT EmptyMon Sep 19, 2011 6:30 pm

xuyenit55 đã viết:
theo em 3 vòng for lồng nhau thế kia thì độ phức tạp là 0(n^3 ) ạ ! cười nhăn răng
thuật toán của em sử dụng phương pháp đếm phân phối với độ phức tạp là 0(n) ! nhưng chỉ nên áp dụng với trường hợp các số nguyên có khoảng cách nhỏ hơn thôi ! nếu mà rơi vào trường hợp mảng có 2 phần tử ví như là 1 và 2000 thì em ko dám áp dụng a! cười ngoác miệng
code demo đây nhưng mà bài của em chẳng biết tại sao thỉnh thoảng chạy nó lại lỗi runtime ,thôi tối về em sửa lại cho hoàn chỉnh ! ai có ý kiến ji cứ chém cho em với ! cười nhăn răng
còn cach khác cũng đơn giản mà độ phức tạp là 0(nlogn) đó là dùng quicksort rồi loại bỏ số phần tử giống nhau , chắc bọn mình có mấy nghìn phần tử thì sử dụng cái này vẫn là ok ! cười nhăn răng


uhm thì quick sort nhưng phần loại bỏ phần tử trùng nhau thì làm cách nào đấy tạo mảng mới hay dịch mảng ai biết đâu
Về Đầu Trang Go down
Admin
Admin
Admin
Admin


Tổng số bài gửi : 80
Votes : 7
Join date : 14/09/2011
Age : 32
Đến từ : Hải Dương, Việt Nam

Thảo luận về các lab CTDL&GT Empty
Bài gửiTiêu đề: Re: Thảo luận về các lab CTDL&GT   Thảo luận về các lab CTDL&GT EmptyMon Sep 19, 2011 6:39 pm

only.yesterday đã viết:

uhm thì quick sort nhưng phần loại bỏ phần tử trùng nhau thì làm cách nào đấy tạo mảng mới hay dịch mảng ai biết đâu
Tốt nhất là dịch mảng... Ta đưa những phần tử đã bị trùng về cuối dãy rồi trừ đi để còn lại kích thước dãy số không bị trùng nhau... Mình nghĩ sắp xếp rồi loại bỏ cũng ổn... Như vậy loại bỏ các số trùng tốt hơn...
bắt lấy bắt lấy bắt lấy bắt lấy
Về Đầu Trang Go down
https://svk55cc.forum-viet.com
onlyesterday
Moderator
Moderator
onlyesterday


Tổng số bài gửi : 76
Votes : 2
Join date : 14/09/2011
Age : 30
Đến từ : LAPUTA

Thảo luận về các lab CTDL&GT Empty
Bài gửiTiêu đề: Re: Thảo luận về các lab CTDL&GT   Thảo luận về các lab CTDL&GT EmptyMon Sep 19, 2011 7:39 pm

Admin đã viết:
only.yesterday đã viết:

uhm thì quick sort nhưng phần loại bỏ phần tử trùng nhau thì làm cách nào đấy tạo mảng mới hay dịch mảng ai biết đâu
Tốt nhất là dịch mảng... Ta đưa những phần tử đã bị trùng về cuối dãy rồi trừ đi để còn lại kích thước dãy số không bị trùng nhau... Mình nghĩ sắp xếp rồi loại bỏ cũng ổn... Như vậy loại bỏ các số trùng tốt hơn...
bắt lấy bắt lấy bắt lấy bắt lấy

dịch mảng thì lại tốn vòng lặp
Về Đầu Trang Go down
caranhp
Thành viên
Thành viên
caranhp


Tổng số bài gửi : 2
Votes : 0
Join date : 19/09/2011

Thảo luận về các lab CTDL&GT Empty
Bài gửiTiêu đề: admin tên gì đấy ? :D   Thảo luận về các lab CTDL&GT EmptyMon Sep 19, 2011 8:21 pm

Admin đã viết:
only.yesterday đã viết:

uhm thì quick sort nhưng phần loại bỏ phần tử trùng nhau thì làm cách nào đấy tạo mảng mới hay dịch mảng ai biết đâu
Tốt nhất là dịch mảng... Ta đưa những phần tử đã bị trùng về cuối dãy rồi trừ đi để còn lại kích thước dãy số không bị trùng nhau... Mình nghĩ sắp xếp rồi loại bỏ cũng ổn... Như vậy loại bỏ các số trùng tốt hơn...
bắt lấy bắt lấy bắt lấy bắt lấy
TỆn ? Tên j????


Được sửa bởi caranhp ngày Mon Sep 19, 2011 8:22 pm; sửa lần 2. (Reason for editing : TÊn j nào ?)
Về Đầu Trang Go down
xuyenit55
Moderator
Moderator
xuyenit55


Tổng số bài gửi : 12
Votes : 3
Join date : 14/09/2011
Age : 32

Thảo luận về các lab CTDL&GT Empty
Bài gửiTiêu đề: Re: Thảo luận về các lab CTDL&GT   Thảo luận về các lab CTDL&GT EmptyMon Sep 19, 2011 8:33 pm

only.yesterday đã viết:
xuyenit55 đã viết:
theo em 3 vòng for lồng nhau thế kia thì độ phức tạp là 0(n^3 ) ạ ! cười nhăn răng
thuật toán của em sử dụng phương pháp đếm phân phối với độ phức tạp là 0(n) ! nhưng chỉ nên áp dụng với trường hợp các số nguyên có khoảng cách nhỏ hơn thôi ! nếu mà rơi vào trường hợp mảng có 2 phần tử ví như là 1 và 2000 thì em ko dám áp dụng a! cười ngoác miệng
code demo đây nhưng mà bài của em chẳng biết tại sao thỉnh thoảng chạy nó lại lỗi runtime ,thôi tối về em sửa lại cho hoàn chỉnh ! ai có ý kiến ji cứ chém cho em với ! cười nhăn răng
còn cach khác cũng đơn giản mà độ phức tạp là 0(nlogn) đó là dùng quicksort rồi loại bỏ số phần tử giống nhau , chắc bọn mình có mấy nghìn phần tử thì sử dụng cái này vẫn là ok ! cười nhăn răng


uhm thì quick sort nhưng phần loại bỏ phần tử trùng nhau thì làm cách nàco đấy tạo mảng mới hay dịch mảng ai biết đâu
cứ dịch mảng bình thường thôi ! cười nhăn răng
tư tưởng như thế này thôi , tớ chưa code hoàn chỉnh nên ko biết có cách nào tốt hơn như thế này ko ? cười nhăn răng
Code:

int t = 0;
for ( int i = 0 ; i < n ; i++)
{
    if ( a[i-1] !=a [i]
{
    t++;
    if ( t == k) // in ra phan tu lon thu k
 
}
}
Về Đầu Trang Go down
DEV.CENTER
Thành viên tích cực
Thành viên tích cực
DEV.CENTER


Tổng số bài gửi : 118
Votes : 13
Join date : 15/09/2011
Age : 30
Đến từ : The Torchwood Universe

Thảo luận về các lab CTDL&GT Empty
Bài gửiTiêu đề: Re: Thảo luận về các lab CTDL&GT   Thảo luận về các lab CTDL&GT EmptyMon Sep 19, 2011 9:04 pm

caranhp đã viết:
Admin đã viết:
only.yesterday đã viết:

uhm thì quick sort nhưng phần loại bỏ phần tử trùng nhau thì làm cách nào đấy tạo mảng mới hay dịch mảng ai biết đâu
Tốt nhất là dịch mảng... Ta đưa những phần tử đã bị trùng về cuối dãy rồi trừ đi để còn lại kích thước dãy số không bị trùng nhau... Mình nghĩ sắp xếp rồi loại bỏ cũng ổn... Như vậy loại bỏ các số trùng tốt hơn...
bắt lấy bắt lấy bắt lấy bắt lấy
TỆn ? Tên j????

bác lập topic khác để hỏi nhé cười nhăn răng:D
Về Đầu Trang Go down
onlyesterday
Moderator
Moderator
onlyesterday


Tổng số bài gửi : 76
Votes : 2
Join date : 14/09/2011
Age : 30
Đến từ : LAPUTA

Thảo luận về các lab CTDL&GT Empty
Bài gửiTiêu đề: Re: Thảo luận về các lab CTDL&GT   Thảo luận về các lab CTDL&GT EmptyMon Sep 19, 2011 9:21 pm

test thử cái code box phát cười nhăn răng
bài của mình thì độ phức tạp hơn quicksort.. cụ thể là O(k*n), trong trường hợp xấu nhất k=n thì sẽ là O(n^2).
tìm kiếm phần tử lớn thứ k ko qua sắp xếp..


Code:
// Do Thanh Trung, 10020382.
//

//Tim so lon nhat, lon thu hai, lon thu k cua day.

#include <iostream>
#include <fstream>
using namespace std;

int main(){
   ifstream in("DAYSO1.TXT");
   int n, i=0;
   in >> n;
   int A[n];
   for (i=0;i<n;i++)
      in >> A[i];
   int max, max2, maxk, k;
   do{
      cout << "Moi ban nhap k: ";
      cin >> k;
   }while(k>n);
   
   // tìm max va max2
   max=max2=maxk=A[0];
   for (i=1;i<n;i++){
      if (A[i]>max) max=A[i];
      if (A[i-1]>max2 && A[i-1]<max) max2=A[i-1];
   }
   if (A[n-1]>max2 && A[n-1]<max) max2=A[i-1];
   
   // tim maxk
   int tmp, count=1;
   maxk=max;
   while(count<k){
      tmp=0;
      for (i=0;i<n;i++)
         if (A[i]>tmp && A[i]<maxk) tmp=A[i];
      if (tmp==0){
         cout << "Ko co phan tu lon thu " <<  k << endl;
         break;
      }
      count++;
      maxk=tmp;
   }
   
   // output
   cout << "Gia tri lon nhat la: " << max;
   cout << "\nGia tri lon thu hai la: " << max2;
   cout << "\nGia tri lon thu " << k << " la: " << maxk << endl;
   in.close();
   system("pause");
   return 0;
}

đang tìm cách đưa luôn thằng max2 vào phần tìm maxk.. nhưng bị lỗi với trường hợp k=1 nên cứ để ở phần tìm chung với max luôn
Về Đầu Trang Go down
mr_maxskill
Thành viên
Thành viên



Tổng số bài gửi : 5
Votes : 0
Join date : 18/09/2011

Thảo luận về các lab CTDL&GT Empty
Bài gửiTiêu đề: Re :   Thảo luận về các lab CTDL&GT EmptyMon Sep 19, 2011 9:23 pm

sau khi t sắp xếp thì t loại bỏ các phần tu trùng nhau,và running time là O(n)
nhưng cái đoạn sắp xếp kiểu j cũng mất O(logn)
đang đau đầu
Về Đầu Trang Go down
DEV.CENTER
Thành viên tích cực
Thành viên tích cực
DEV.CENTER


Tổng số bài gửi : 118
Votes : 13
Join date : 15/09/2011
Age : 30
Đến từ : The Torchwood Universe

Thảo luận về các lab CTDL&GT Empty
Bài gửiTiêu đề: Re: Thảo luận về các lab CTDL&GT   Thảo luận về các lab CTDL&GT EmptyMon Sep 19, 2011 9:32 pm

mr_maxskill đã viết:
sau khi t sắp xếp thì t loại bỏ các phần tu trùng nhau,và running time là O(n)
nhưng cái đoạn sắp xếp kiểu j cũng mất O(logn)
đang đau đầu
logn thì tốt quá rồi còn j




bác sắp xếp thế nào vậy cười nhăn răng
Về Đầu Trang Go down
DEV.CENTER
Thành viên tích cực
Thành viên tích cực
DEV.CENTER


Tổng số bài gửi : 118
Votes : 13
Join date : 15/09/2011
Age : 30
Đến từ : The Torchwood Universe

Thảo luận về các lab CTDL&GT Empty
Bài gửiTiêu đề: Re: Thảo luận về các lab CTDL&GT   Thảo luận về các lab CTDL&GT EmptyMon Sep 19, 2011 9:53 pm

xuyenit55 đã viết:
theo em 3 vòng for lồng nhau thế kia thì độ phức tạp là 0(n^3 ) ạ ! cười nhăn răng
thuật toán của em sử dụng phương pháp đếm phân phối với độ phức tạp là 0(n) ! nhưng chỉ nên áp dụng với trường hợp các số nguyên có khoảng cách nhỏ hơn thôi ! nếu mà rơi vào trường hợp mảng có 2 phần tử ví như là 1 và 2000 thì em ko dám áp dụng a! cười ngoác miệng
code demo đây nhưng mà bài của em chẳng biết tại sao thỉnh thoảng chạy nó lại lỗi runtime ,thôi tối về em sửa lại cho hoàn chỉnh ! ai có ý kiến ji cứ chém cho em với ! cười nhăn răng
còn cach khác cũng đơn giản mà độ phức tạp là 0(nlogn) đó là dùng quicksort rồi loại bỏ số phần tử giống nhau , chắc bọn mình có mấy nghìn phần tử thì sử dụng cái này vẫn là ok ! cười nhăn răng

Code:

#include<iostream>
#include<stdlib.h>

using namespace std;

int main()
{
   
    
     int n =0 , a[100],c[100] , m = 0 , f = 0 , b[100] , t = 0  , k;
     // sinh so ngau nhien cua n va mang cua a
    
     srand((unsigned)time(NULL));
     n = rand()%10+3;
     for ( int  i = 0 ; i < n ; i++){
        a[i] = rand() %10;
        cout << a[i] << " , ";
      
     }
     int max = 0 ; max  = a[0];
     for ( int  i = 1 ; i < n ; i++){
      
          if ( max < a[i] ) max = a[i];
     }
     // c  = new int [max];
     for ( int i = 0 ; i < max ; i++)
     {
          c[i] = 0;
     }
     for (  int i = 0 ; i < max ; i++)
     {
         c[a[i]] +=1;
     }
     cout << "\nnhap k = " ;
     cin >> k;
     for (  int j = 0 ; j < max ; j++)
     {
         if ( c[j] != 0)
         {
            b[t] = j;
         
             if ( (t+1) == k)
             {
               
               cout << "\nPhan tu lon thu " << k << " la : " << b[t] << endl;
            }
         
           t++;
         }
     }
     system("pause");
     return 0;
}
    
   
    

test thử thì kết quả sai bác ơi
Về Đầu Trang Go down
mr_maxskill
Thành viên
Thành viên



Tổng số bài gửi : 5
Votes : 0
Join date : 18/09/2011

Thảo luận về các lab CTDL&GT Empty
Bài gửiTiêu đề: Re   Thảo luận về các lab CTDL&GT EmptyMon Sep 19, 2011 9:59 pm

sau 1 hồi suy nghĩ t và Phong đã sửa đc bài của Xuyến,chỉ có điều nếu trong trường hợp số âm thì bài này sẽ rất phức tạp
Về Đầu Trang Go down
mr_maxskill
Thành viên
Thành viên



Tổng số bài gửi : 5
Votes : 0
Join date : 18/09/2011

Thảo luận về các lab CTDL&GT Empty
Bài gửiTiêu đề: Re: Thảo luận về các lab CTDL&GT   Thảo luận về các lab CTDL&GT EmptyMon Sep 19, 2011 10:01 pm

DEV.CENTER đã viết:
mr_maxskill đã viết:
sau khi t sắp xếp thì t loại bỏ các phần tu trùng nhau,và running time là O(n)
nhưng cái đoạn sắp xếp kiểu j cũng mất O(logn)
đang đau đầu
logn thì tốt quá rồi còn j




bác sắp xếp thế nào vậy cười nhăn răng
theo Xuyến nói thì ta dùng quicksort thì sẽ tốn O(logn) mà
Về Đầu Trang Go down
mr_maxskill
Thành viên
Thành viên



Tổng số bài gửi : 5
Votes : 0
Join date : 18/09/2011

Thảo luận về các lab CTDL&GT Empty
Bài gửiTiêu đề: Re: Thảo luận về các lab CTDL&GT   Thảo luận về các lab CTDL&GT EmptyMon Sep 19, 2011 10:03 pm

aaa t nhầm nhé,quicksorrt tốn O(nlogn)
Về Đầu Trang Go down
xuyenit55
Moderator
Moderator
xuyenit55


Tổng số bài gửi : 12
Votes : 3
Join date : 14/09/2011
Age : 32

Thảo luận về các lab CTDL&GT Empty
Bài gửiTiêu đề: Re: Thảo luận về các lab CTDL&GT   Thảo luận về các lab CTDL&GT EmptyMon Sep 19, 2011 10:11 pm

mr_maxskill đã viết:
sau 1 hồi suy nghĩ t và Phong đã sửa đc bài của Xuyến,chỉ có điều nếu trong trường hợp số âm thì bài này sẽ rất phức tạp
tớ cũng vừa mới nghĩ ra đc cái đó ! đang code xem sao ! cười nhăn răng
Về Đầu Trang Go down
xuyenit55
Moderator
Moderator
xuyenit55


Tổng số bài gửi : 12
Votes : 3
Join date : 14/09/2011
Age : 32

Thảo luận về các lab CTDL&GT Empty
Bài gửiTiêu đề: Re: Thảo luận về các lab CTDL&GT   Thảo luận về các lab CTDL&GT EmptyMon Sep 19, 2011 10:12 pm

DEV.CENTER đã viết:
xuyenit55 đã viết:
theo em 3 vòng for lồng nhau thế kia thì độ phức tạp là 0(n^3 ) ạ ! cười nhăn răng
thuật toán của em sử dụng phương pháp đếm phân phối với độ phức tạp là 0(n) ! nhưng chỉ nên áp dụng với trường hợp các số nguyên có khoảng cách nhỏ hơn thôi ! nếu mà rơi vào trường hợp mảng có 2 phần tử ví như là 1 và 2000 thì em ko dám áp dụng a! cười ngoác miệng
code demo đây nhưng mà bài của em chẳng biết tại sao thỉnh thoảng chạy nó lại lỗi runtime ,thôi tối về em sửa lại cho hoàn chỉnh ! ai có ý kiến ji cứ chém cho em với ! cười nhăn răng
còn cach khác cũng đơn giản mà độ phức tạp là 0(nlogn) đó là dùng quicksort rồi loại bỏ số phần tử giống nhau , chắc bọn mình có mấy nghìn phần tử thì sử dụng cái này vẫn là ok ! cười nhăn răng

Code:

#include<iostream>
#include<stdlib.h>

using namespace std;

int main()
{
   
    
     int n =0 , a[100],c[100] , m = 0 , f = 0 , b[100] , t = 0  , k;
     // sinh so ngau nhien cua n va mang cua a
    
     srand((unsigned)time(NULL));
     n = rand()%10+3;
     for ( int  i = 0 ; i < n ; i++){
        a[i] = rand() %10;
        cout << a[i] << " , ";
      
     }
     int max = 0 ; max  = a[0];
     for ( int  i = 1 ; i < n ; i++){
      
          if ( max < a[i] ) max = a[i];
     }
     // c  = new int [max];
     for ( int i = 0 ; i < max ; i++)
     {
          c[i] = 0;
     }
     for (  int i = 0 ; i < max ; i++)
     {
         c[a[i]] +=1;
     }
     cout << "\nnhap k = " ;
     cin >> k;
     for (  int j = 0 ; j < max ; j++)
     {
         if ( c[j] != 0)
         {
            b[t] = j;
         
             if ( (t+1) == k)
             {
               
               cout << "\nPhan tu lon thu " << k << " la : " << b[t] << endl;
            }
         
           t++;
         }
     }
     system("pause");
     return 0;
}
    
   
    

test thử thì kết quả sai bác ơi
uhm , đôi lúc thấy nó chạy runtime thôi , tư tưởng của tớ là đúng , tớ đang code lại cho chuẩn xác ! cười nhăn răng
Về Đầu Trang Go down
DEV.CENTER
Thành viên tích cực
Thành viên tích cực
DEV.CENTER


Tổng số bài gửi : 118
Votes : 13
Join date : 15/09/2011
Age : 30
Đến từ : The Torchwood Universe

Thảo luận về các lab CTDL&GT Empty
Bài gửiTiêu đề: Re: Thảo luận về các lab CTDL&GT   Thảo luận về các lab CTDL&GT EmptyMon Sep 19, 2011 10:17 pm

xuyenit55 đã viết:

uhm , đôi lúc thấy nó chạy runtime thôi , tư tưởng của tớ là đúng , tớ đang code lại cho chuẩn xác ! cười nhăn răng
ko phải lỗi runtime chịu
Về Đầu Trang Go down
xuyenit55
Moderator
Moderator
xuyenit55


Tổng số bài gửi : 12
Votes : 3
Join date : 14/09/2011
Age : 32

Thảo luận về các lab CTDL&GT Empty
Bài gửiTiêu đề: Re: Thảo luận về các lab CTDL&GT   Thảo luận về các lab CTDL&GT EmptyMon Sep 19, 2011 10:23 pm

DEV.CENTER đã viết:
xuyenit55 đã viết:

uhm , đôi lúc thấy nó chạy runtime thôi , tư tưởng của tớ là đúng , tớ đang code lại cho chuẩn xác ! cười nhăn răng
ko phải lỗi runtime chịu
thế hả , để tớ xem lại xem sao !:)
Về Đầu Trang Go down
DEV.CENTER
Thành viên tích cực
Thành viên tích cực
DEV.CENTER


Tổng số bài gửi : 118
Votes : 13
Join date : 15/09/2011
Age : 30
Đến từ : The Torchwood Universe

Thảo luận về các lab CTDL&GT Empty
Bài gửiTiêu đề: Re: Thảo luận về các lab CTDL&GT   Thảo luận về các lab CTDL&GT EmptyMon Sep 19, 2011 10:26 pm

à... các bác giải thích thêm về phép sắp xếp đếm phân phối đc ko.. đọc wiki chẳng vào đc tí j cả chịu
Về Đầu Trang Go down
Sponsored content





Thảo luận về các lab CTDL&GT Empty
Bài gửiTiêu đề: Re: Thảo luận về các lab CTDL&GT   Thảo luận về các lab CTDL&GT Empty

Về Đầu Trang Go down
 
Thảo luận về các lab CTDL&GT
Về Đầu Trang 
Trang 1 trong tổng số 2 trangChuyển đến trang : 1, 2  Next
 Similar topics
-
» thảo luận về java lab02

Permissions in this forum:Bạn không có quyền trả lời bài viết
Forum sinh viên K55CC - UET :: Học tập :: Môn chuyên ngành IT :: Ngôn ngữ C, C++-
Chuyển đến