Daily Diaries Of CTK

.

Hãy chọn cho mình một con đường để đi

Nếu bạn không có con đường nào để đi thì cũng không có thành công nào chọn bạn

Hãy để mỗi ngày trôi qua là một ngày ý nghĩa

Luôn cố gắng hết mình vì những ước mơ.

Hãy để ngày hôm nay tốt hơn ngày hôm qua

Bạn sinh ra để làm nên những việc lớn lao.

Hãy tin vào chính bản thân của mình.

Để thực hiện được mơ ước thì bạn phải biết khát khao.

Luôn biết đứng lên sau mỗi lần vấp ngã.

Hạnh phúc không phải là kết quả, đó là quá trình bạn đi tới thành công.

Thứ Năm, 24 tháng 3, 2016

MergeSort



#include <iostream>
using namespace std;
class sort1{
public: void mergelist(int Data[], int first, int mid, int last);
        void mergeSort(int A[], int ledt, int right);
};

// trien khai cac ham trong class
void sort1::mergelist(int Data[], int first, int mid, int last){
    int tmp[100];
    int first1 = first;
    int last1 = mid;
    int first2 = mid+1;
    int last2 = last;
    int index = first1;
    while((first1<=last1)&&(first2<=last2)){
        if(Data[first1]<Data[first2]){
            tmp[index] = Data[first1];
            first1++;
        }
        else{
            tmp[index] = Data[first2];
            first2++;
        }
        ++index;
    }
    while(first1<=last1){
        tmp[index] = Data[first1]; // sao not cac phan tu con lai vao mang nho
        ++index;
        ++first1;
    }
    while(first2<=last2){
        tmp[index] = Data[first2]; // sao not cac phan tu con lai vao mang nho
        ++index;
        ++first2;
    }
    for(index = first;index<=last; index++){
        Data[index] = tmp[index];
    }
}

// goi ham mergeSort
void sort1::mergeSort(int A[], int left, int right){
    if(left>=right) return;
    else{
        int mid=(left+right)/2;
        mergeSort(A, left, mid);
        mergeSort(A, mid+1, right);
        mergelist(A, left, mid, right);
    }
}
int main()
{
    sort1 srt;
    int A[100];
    int n;
    cout<<"Nhap so phan tu cua mang: "<<endl;
    cin>>n;
    for(int i=1; i<=n; i++){
        cout<<"Phan tu thu "<<i<<" la: ";
        cin>>A[i];
    }
    srt.mergeSort(A,1,n);
    for(int i=1; i<=n; i++){
        cout<<" "<<A[i];
    }
    return 0;
}









Con đường đi tới thành công


1.Dung hòa giữa gia đình và công việc
Công việc quan trọng, nhưng không phải vì vậy mà chúng ta xem đó là mục tiêu hàng đầu phải đạt được. Để có thể làm việc tốt bạn cần có một hậu phương vững chắc, đó chính là gia đình. Gia đình là yếu tố vô cùng quan trọng quyết định đến thành công của bạn. Đó là nơi để bạn quan tâm, chăm sóc và lo lắng. Bạn hãy nghĩ rằng, tất cả những gì mình làm, mình cố gắng không phải vì lợi ích bản thân mà là vì gia đình và xã hội. Vì thế, bí quyết để thành công trong cuộc sống là phải biết dung hòa giữa gia đình và công việc trong bất kỳ hoàn cảnh nào.
2.Quý trọng thời gian
Bạn không chỉ có thời gian làm việc mà phải có thời gian nghỉ ngơi, thời gian dành cho gia đình, người thân, bạn bè. Vì vậy, ngay từ lúc này bạn hãy xem lại những gì mình đã làm trong thời gian qua và những việc sẽ làm sắp tới để có một thời gian biểu thật khoa học cho công việc và trong cuộc sống hàng ngày
Biết quý trọng thời gian sẽ cho bạn một cuộc sống thoải mái và ý nghĩa hơn rất nhiều. Bởi vậy, đừng bao giờ để lãng phí thời gian với bất kỳ ly do gì. Điều đó sẽ góp phần rất lớn cho thành công trong cuộc sống của bạn.
3. Không thể thiếu những nguyên tắc và niềm tin
Trong cuộc sống nếu không có những nguyên tắc thì chắc chắn bạn sẽ không thể đạt đến đỉnh cao của thành công. Nguyên tắc giúp xây dựng cách sống, cách làm việc và mang lại hiệu quả cao trong công việc và cuộc sống. Tuy nhiên bạn cần phân biệt rõ nguyên tắc trong công việc, trong cuộc sống cá nhân, gia đình. Không thể mang những nguyên tắc trong công việc áp đặt vào cuộc sống riêng và ngược lại. Có những nguyên tắc đúng đắn và khoa học là một trong những bí quyết không thể thiếu để giúp bạn thành công trong cuộc sống hiện đại bây giờ.
4. Lòng đam mê, hành động và kiên trì
Thời gian giúp bạn thực hiện những điều mình muốn. Nguyên tắc giúp cho cuộc sống và công việc của bạn được thực hiện một cách có khoa học. Còn lòng đam mê sẽ thôi thúc bạn đi đến hành động và giúp bạn kiên trì hơn để đạt được những gì mình muốn.
Sự kiên trì giúp cho ý chí và quyết tâm trong bạn càng được nâng cao và vững chắc hơn. Trong cuộc sống chúng ta sẽ gặp nhiều khó khăn rào cản và có thể sẽ có cả những thất bại. Nhưng nếu bạn thật sự là một người kiên trì thì tất cả những điều đó sẽ bị đẩy lùi lại phía sau, nhường đường cho những điều tốt đẹp ở phía trước.


5. Không nuối tiếc
Thêm một bí quyết giúp bạn thành công trong cuộc sống là không nên nuối tiếc. Trong cuộc sống chắc chắn sẽ có nhiều chuyện khiến mình không vui, không hài lòng hoặc có thể mình bỏ lỡ những cơ hội mà đáng ra đã nắm được trong tay. Tuy nhiên, không phải vì vậy mà bạn cho phép bản thân chán nản và nhắc đến việc đó mãi giống như sự tiếc nuối. Thay vào đó, hãy xem những điều đã mất như một bài học kinh nghiệm cho cuộc sống để cố gắng đạt được những điều lớn hơn.
6. Không làm những việc quá khả năng
Warren Buffett - Nhà tiên tri xứ Omaha, người giàu thứ ba thế giới từng nói: “Tôi không thích nhảy qua những bức rào cao 2 mét. Tôi chỉ tìm những bức rào cao 30cm để có thể bước qua”.
Một dự định quá lớn sẽ khiến cho bạn dễ mệt mỏi và chán nản. Vậy tại sao bạn không chọn những công việc vừa sức với mình để thực hiện. Một gia đình hạnh phúc hay một công việc yêu thích sẽ giúp bạn cảm thấy cuộc sống ý nghĩa hơn rất nhiều. Ai cũng có những ước mơ của riêng mình, nhưng phải xác định rõ rằng không thể bằng một bước bạn sẽ đạt được ước mơ đó. Hãy bắt đầu với những gì bạn có thể làm được và dần vươn tới những điều cao hơn, xa hơn.
7.Không biết thỏa mãn
Thành công chỉ đến với những ai biết cố gắng và luôn có những khát vọng trong cuộc sống. Nếu bạn chỉ đọc hết một quyển sách và cho như vậy là đủ thì không bao giờ bạn có thêm kiến thức, kỹ năng cho bản thân. Trong cuộc sống và công việc cũng vậy, cuộc sống luôn là những thử thách và bạn phải tìm cách vượt qua tất cả những thử thách đó. Nếu bạn dễ dàng thõa mãn với những gì mình đã làm được điều đó đồng nghĩa với việc bạn đã chấp nhận bỏ cuộc. Hãy luôn có những dự định mới trong cuộc sống và cố gắng để đạt được nó, có như vậy bạn mới thật sự là người thành công.
8.Dám nghĩ, dám làm
Khi bắt đầu làm bất kỳ công việc gì bạn cũng hãy nghĩ đến những rủi ro và dũng cảm đón nhận nó. Hãy nhớ là bạn có thể làm bất cứ điều gì bạn muốn. Đừng để người ta nói rằng, bạn không đủ thông minh... Việc đó quá khó… đó là một ý tưởng dở hơi… chưa ai từng làm như vậy. Cuộc sống của bạn là do bạn tự quyết định, vì thế nếu bạn chỉ dừng lại ở những suy nghĩ thì thành công sẽ không bao giờ đến. Những nguyên tắc, niềm tin và sự kiên trì sẽ giúp bạn dám làm những điều mình muốn.
Nếu bạn không tự xây ước mơ của mình thì người khác sẽ thuê bạn xây ước mơ của họ”. Đừng để những ước mơ của bạn lụi tàn theo thời gian. Hãy bắt tay hành động ngay khi có những dự định và nhớ hãy đặt ra cho mình những nguyên tắc trong cuộc sống, cùng sự kiên trì và quyết tâm cao để khi kết thúc công việc dù thành công hay thất bại cũng không phải nuối tiếc.




Điểm kết thúc của quá trình này sẽ là điểm bắt đầu quá trình khác


      Đôi khi thất bại chưa phải là kết thúc. Đời người là một chặng đường dài, trên chặng đường đó sẽ có những lúc bạn thành công rực rỡ nhưng nhiều lúc bạn cũng phải chịu đựng những áp lực, đau khổ. Không quan trọng bạn đã trải qua bao nhiêu khó khăn, mà quan trọng bạn đã đối mặt với những khó khăn đó như thế nào. Có những người chốn tránh, có những người không làm gì cả và tất nhiên có những con người dũng cảm đối mặt với nó. Dù cho bạn đã chọn giải pháp nào đi chăng nữa thì khó khăn sớm muộn gì cũng qua đi. Chính vì vậy bạn cần nhìn nhận cuộc sống dưới một góc nhìn lạc quan. Điểm kết thúc của quá trình này sẽ là điểm bắt đầu quá trình khác. Hãy cứ cố gắng lên.




Code tìm kiếm và xóa phần tử trên cây nhị phân

#include <iostream>
#include <stdlib.h>
using namespace std;
// khai bao cau truc
struct node{
    int Data;
    struct node *pLeft;
    struct node *pRight;
};
typedef struct node NODE;
typedef NODE *Tree;

// khoi tao cay
void Init(Tree &t){
    t=NULL;
}

// Tao Node tren cay
NODE *makeNode(int x){
    NODE *p = new NODE;
    if(p==NULL) return NULL;
    else{
        p->Data = x;
        p->pLeft = p->pRight = NULL;
    }
    return p;
}

// Insert Node vao cay
void insertNode(Tree &t, int x){

    if(t==NULL){ // cay rong => x la Node goc
        NODE *p = new NODE;
        p=makeNode(x);
        t=p;
    }
    else {
        if(t->Data > x){
            insertNode(t->pLeft,x);
        }
        else if(t->Data < x){
         insertNode(t->pRight,x);
        }
    }
}

// Nhap du lieu cho cay
void inputTree(Tree &t){
    Init(t);// phai khoi tao cay truoc thi moi co the nhap du lieu cho cay
    cout<<"Nhap du lieu cho cay\n";
    cout<<"An phim 0 de det thuc \n";
    int x;
    do{
        //int x;
        cout<<"Nhap Node: ";
        cin>>x;
        if(x!=0) {
            insertNode(t,x);
        }
       // else break;
    }while(x!=0);
}

// Xuat su lieu
void output(Tree &t){
    if(t!=NULL){
        cout<<t->Data<<" ";
        output(t->pLeft);
        output(t->pRight);
    }
}

// tim phan tu trong cay
NODE *searchTree(Tree &t, int x){
    if(t==NULL) return NULL;
    else if(t->Data<x) searchTree(t->pRight,x);
    else if(t->Data>x) searchTree(t->pLeft,x);
    else return t;
}

// Tim phan tu q bi xoa, cho phan tu p len thay the
void thaythe(Tree &q, Tree &p){
    // tim phan tu trai nhat cua cay ben phai
    //if(t==NULL) return;
    if(p->pLeft!=NULL){
        thaythe(q,p->pLeft);
    }
    else {
        q->Data = p->Data;
        q=p;
        p=p->pRight;
    }

}

// xoa phan tu
void delTree(Tree &t, int x){
    if(t==NULL) return;
    if(t->Data > x) delTree(t->pLeft,x);
    if(t->Data < x) delTree(t->pRight,x);
    if(t->Data == x) { // khi tim ra phan tu do roi
        // xoa Node la hoac Node co 1 phan tu
        NODE *q = t;// xoa phan tu bang con tro
        if(t->pLeft==NULL) { // neu ma ben traiphan tu do bang NULL
            t=t->pRight; // cho t tro toi t->pRight
        }
        else if(t->pRight==NULL){
            t=t->pLeft;
        }
        // xoa Node co 2 phan tu Trai va Phai
       else thaythe(q,t->pRight);
        delete q;
    }
}
int main()
{
    Tree t;
    int k,x;
    inputTree(t);
    output(t);

    cout<<endl<<"Nhap so ban muon tim:";
    cin>>x;
    NODE *p = searchTree(t,x);
    if(p==NULL) cout<<"Khong tim thay";
    else cout<<"Co tim thay";

    cout<<endl<<"Nhap phan tu can xoa:";
    cin>>k;
    delTree(t,k);
    output(t);
    return 0;
}