[ create a new paste ] login | about

Link: http://codepad.org/5wgnAHTT    [ raw code | output | fork ]

C, pasted on May 6:
/* Phát sinh ngẫu nhiên mảng n số nguyên và sắp xếp mảng này giảm dần bằng thuật toán Quick Sort . 552.cpp */

/* Trong tất cả các thuật toán sắp xếp thì Quick Sort được mệnh danh là :"Ông Vua Của Thuật Toán Sắp Xếp" bởi độ phức tạp của nó là rất ít so với các thuật toán khác và thời gian thực thi chương trình là nhanh nhất trong các loại thuật toán sắp xếp . */

/* Ý Tưởng Của Thuật Toán: Xét dãy n phần tử a[0],a[1],a[2]...a[n-1] .
	Bước 1: chọn khóa pivot = a[(left+right)/2].
	Bước 2: Phân vùng. Những phần tử nhỏ hơn khóa thì nằm bên trái của khóa, những phần tử lớn hơn khóa thì nằm bên phải của khóa và những phần tử bằng khóa có thể nằm bất cứ chỗ nào trên dãy.
	Bước 3: sắp xếp cho cả hai phân vùng mới bên trái và bên phải. */
/* 

Tác giả: Nguyễn Việt Nam Sơn
Trung tâm đào tạo tin học - Thiết kế phần mềm - Sơn Đẹp Trai: www.SonDepTrai.com

Nguồn source code này Tôi viết vào năm 2012 lúc mới bắt đầu học lập trình C/C++ nên một số cách sẽ không được tối ưu - Bạn chỉ nên dùng trên tinh thần tham khảo thôi nhé.
Mong giúp đỡ được Bạn trên con đường Học Lập Trình.
TẤT CẢ VÌ SỰ THÀNH CÔNG CỦA BẠN

*/
#include<stdio.h>
#include<conio.h>
#include<Windows.h>
#include<time.h>
#define MAX 40

void PhatSinhNgauNhien(int a[])
{
	srand(time(0));
	for(int i=0;i<MAX;i++)
	{
		a[i]=(rand()%61)-30;
	}
}

void XuatMang(int a[])
{
	for(int i=0;i<MAX;i++)
	{
		printf("%4d",a[i]);
	}
}

void HoanVi(int &x,int &y)
{
	int temp=x;
	x=y;
	y=temp;
}

void SapXepGiamDanBangThuatToanQuickSort(int a[],int left,int right)
{
	int i,j,x;
	if(left>=right)
	{
		return;
	}
	x=a[(left+right)/2]; // Chọn phần tử giữa làm giá trị mốc .
	i=left;
	j=right;
	while(i<j)
	{
		while(a[i]>x) // ở đây là sắp giảm dần
		{
			i++;
		}
		while(a[j]<x) // ở đây là sắp giảm dần
		{
			j--;
		}
		if(i<=j)
		{
			HoanVi(a[i],a[j]);
			i++;
			j--;
		}
	}
	SapXepGiamDanBangThuatToanQuickSort(a,left,j);
	SapXepGiamDanBangThuatToanQuickSort(a,i,right);
}

void main()
{
	int a[MAX],tieptuc;
	quaylai:PhatSinhNgauNhien(a);
	printf("\n>>>>>>>>>>>>>>>Mang Phat Sinh Ngau Nhien Ban Dau La:<<<<<<<<<<<<<<<<<<<<<<<<\n");
	XuatMang(a);
	printf("\n");
	SapXepGiamDanBangThuatToanQuickSort(a,0,MAX-1);
	printf("\n>>>>>>>>>>>>>>>Mang Sau Khi Sap Xep Giam Dan La:<<<<<<<\n");
	XuatMang(a);
	printf("\n");
	printf("\nBan muon tiep tuc thuc hien chuong trinh hay khong ? Neu co bam phim C,nguoc lai bam bat ky 1 phim nao khac de ket thuc!");
	tieptuc=getch();
	if(tieptuc=='c'||tieptuc=='C')
	{
		system("cls");
		goto quaylai;
	}
}


Output:
1
2
3
4
5
6
7
8
9
10
Line 17: error: conio.h: No such file or directory
Line 19: error: Windows.h: No such file or directory
In function 'PhatSinhNgauNhien':
Line 28: error: 'for' loop initial declaration used outside C99 mode
In function 'XuatMang':
Line 36: error: 'for' loop initial declaration used outside C99 mode
t.c: At top level:
Line 42: error: expected ';', ',' or ')' before '&' token
In function 'main':
Line 81: warning: return type of 'main' is not 'int'


Create a new paste based on this one


Comments: