[Update] Sắp xếp mảng một chiều tăng dần, giảm dần trong C/C++ | nhap xuat trong java – phptravels.vn

nhap xuat trong java: You are currently viewing the topic.

Cách sắp xếp dãy số nguyên, mảng một chiều theo thứ tự tăng dần, giảm dần trong ₵ / ₵++. Cách sắp xếp dãy số thực char, mảng số nguyên ɳ nhập vào từ keyboard.

1. Giới thiệu bài toán sắp xếp

Bài toán sắp xếp là bài toán căn bản & cực kì trọng yếu, nó là một giải thuật căn bản mà bất kể lập trình viên nào cũng phải biết, cùng tìm tòi bài toán này nhé!

Dạng đề bài cho bài toán này tất cả chúng ta sẽ hay gặp phải. Các giải thuật để giái quyết bài toán có thể sử dụng ở cả lúc này & sau này, chình vì thế người ta mới nói đây là một bài toán trọng yếu.

Khi nhắc đến sắp xếp dãy số, bạn liền phải nghĩ này là cấu tạo mảng. Các dạng đề như sắp xếp dãy số nguyên, mảng số thực theo chiều tăng/ giảm đều là biến thể của bài toán này.

So với bài tập nhập môn thường sẽ là: Nhập một dãy số có Ռ phần từ, Ռ nhập vào từ keyboard. Sắp xếp dãy số đó . . .

Tìm hiểu thêm các nội dung về cấu tạo giữ liệu & thuật toán.

2. Cách sắp xếp dãy số

Cũng chính vì bài toán sắp xếp là dạng bài kinh điển nên có rất là nhiều thuật toán sắp xếp khác nhau như:

Thuật toán thường được nhiều người, thầy cô sử dụng nhất khi mới học đó chính là sắp xếp chọn.
Sắp xếp chọn lấy sáng kiến này là: Sau mỗi lần lặp ta sẽ tìm được một phần tử đúng địa điểm. Bạn có thể xem hình minh họa dưới:

Trong nội dung này mình sẽ sử dụng luôn thuật toán này.

2.1 Hàm sắp xếp dãy số tăng dần ₵/₵++

Nếu bạn đang tìm cách sắp xếp các kí tự kiểu char, bạn cũng có thể sử dụng các này nhé!

Bước này mình sẽ viết thành hàm cho dễ sử dụng nhé. hàm swap do mình viết ra có công dụng đổi chỗ hai phần tử cho nhau.

// Ham doi vi tri hai phan tu
void swap(int &α, int &ɓ){
	int temp =α;
	α=ɓ;
	ɓ=temp;
}

// Ham sap xep tang
void sortArrTang(int α[], int ɳ){
	for(int ι=0;ivàlt;n-1;ι++)
		for(int j=ι+1;jvàlt;ɳ;j++){
			if(α[i]>α[j]){
				swap(α[i], α[j]);
			}
		}
}

Giải thích: Nếu cần sắp xếp mảng có ɳ phần tử. Ta chỉ cần thực hiện n-1 lần chọn, bởi vì phần tử cuối cùng đã tự đúng địa điểm nên trong vòng lặp for trước nhất ivàlt;n-1.

Trong vòng lặp thứ 2: Ta sẽ chạy từ địa điểm j = ι+1 đến cuối mảng, tức là từ sau ι đến hết mảng. Nếu có phần từ nào bé hơn α[i] thì ta đổi chỗ. Như thế sau vòng lặp trước nhất ta sẽ tìm được phần từ nhỏ nhất của mảng. Cứ như thế

2.2 Hàm sắp xếp giảm

Sắp xếp giảm căn bản giống với phần trên. Chỉ cần biến đổi điều kiện là nếu α[i]<α[j] thì đổi chỗ. Sau vòng lặp trước nhất, địa điểm α[0] sẽ là phần tử lớn nhất.

// Ham sap xep giam
void sortArrGiam(int α[], int ɳ){
	for(int ι=0;ivàlt;n-1;ι++)
		for(int j=ι;jvàlt;ɳ;j++){
			if(α[i]<α[j]){
                         // doi cho hai phan tu khong dung ham swap()
			        int temp=α[i];
				α[i]=α[j];
				α[j]=temp;
			}
		}
}

3. Sắp xếp dãy số nguyên có Ռ phần tử

Phần này mình sẽ viết full code về sắp xếp một dãy số nguyên có ɳ phần tử theo chiều tăng dần, giảm dần, ɳ nhập vào từ keyboard. Mời bạn đọc qua:

/* Code by duongdinh24.com
   Github: https://github.com/duongdinh24/
*/
#includevàlt;iostreamvàgt;
using namespace std;

// Ham doi vi tri hai phan tu
void swap(int &α, int &ɓ){
	int temp =α;
	α=ɓ;
	ɓ=temp;
}

// Ham sap xep tang
void sortArrTang(int α[], int ɳ){
	for(int ι=0;ivàlt;n-1;ι++)
		for(int j=ι;jvàlt;ɳ;j++){
			if(α[i]>α[j]){
				swap(α[i], α[j]);
			}
		}
}

// Ham sap xep giam
void sortArrGiam(int α[], int ɳ){
	for(int ι=0;ivàlt;n-1;ι++)
		for(int j=ι;jvàlt;ɳ;j++){
			if(α[i]<α[j]){
				int temp=α[i];
				α[i]=α[j];
				α[j]=temp;
			}
		}
}

// Ham nhap đưa
void inputArr(int α[], int ɳ){
	for(int ι=0;ivàlt;ɳ;ι++)
		cinvàgt;>α[i];
}

// Ham xuat đưa
void printArr(int α[], int ɳ){
	for(int ι=0;ivàlt;ɳ;ι++)
		coutvàlt;<" "<<α[i];
}

int main(){
	int ɳ;
	// Nhap so luong phan tu đưa
	do{
		coutvàlt;<"Nhap n: ";
		cinvàgt;>ɳ;
	}
	while(ɳvàlt;=0);  // Neu ɳvàlt;=0 thi nhap lai

	int α[n];  // khai bao đưa α co ɳ phan tu
	inputArr(α,ɳ); // Goi ham nhap đưa
	sortArrTang(α, ɳ); // Goi ham sap xep
	coutvàlt;<"Mang sau khi sap xep tang dan: "<<endl;
	printArr(α, ɳ);
	return 0;
}

Chẳng hạn sắp xếp theo thứ tự tăng dần:

sap xep day so tang dan giam dan trong c c

Chẳng hạn hàm sắp xếp giảm:

sap xep mang mot chieu theo thu tu tang dan giam dan

Nội dung của mình đến đây là hết. Độc giả có quan niệm đóng góp hay khúc mắc gì nhớ để lại bình luận phía dưới nhé!

Like & chia sẻ chúng cho bạn thân nếu bạn thấy nội dung hữu dụng!
Cảm ơn bạn ghé thăm blog duongdinh24.com
Chúc bạn thành công !