Giúp đỡ bài về mảng trong C

mình đang băt đầu học lập trình C và nhặt được 1 cuốn bí kíp tại Tài liệu lập trình C for newbie - Chương 1: Nền tảng để bắt đầu!

tài liệu dễ học, văn phong lôi cuốn, mình học tới bài mảng thì gặp 1 số bài bài tập, như 1 siêu nhân code mình giải tất cả 4 bài trên cho đến khi đến bài thứ 5 thì mình đã cảm thấy mình không hợp với lập trình chút nào, đây là em nó:

Bài tập 5
Bài tập này khó hơn hẳn các bài tập kia nhưng bạn hoàn toàn có khả năng thực hiện.
Hãy viết một function sapXepArray sắp xếp lại các giá trị bên trong theo thứ tự tăng dần.
C code:

void sapXepArray (int array[ ], int kichThuoc);

VD: array {1,5,7,8,5,2,3} sẽ chuyển thành {1,2,3,5,5,7,8}.

Bình thường mình sẽ post code lên đây cho mọi người xem rồi cùng sửa dùm, nhưng mà đến bài này mình không hình dung ra nổi code như nào nữa, mọi người giúp mình với pls, thank all.

Bạn đọc các thuật toán sắp xếp nhé.

1 Like

bạn có link không ạ??

Thuật toán con người hay sử dụng trong tự nhiên (ko phải trong lập trình) là sắp xếp chọn :v thớt đọc hiểu được vì sao nó đúng rồi hãy tìm hiểu thêm :slight_smile:

1 Like

https://docs.google.com/viewer?a=v&pid=sites&srcid=ZGVmYXVsdGRvbWFpbnxjYW5oaG9hbmh8Z3g6NDFlYzhkYmJjYTRjNDE3MQ
xem phần sắp xếp(Interchange Sort). chậm thôi, mở pwpoint lên xem nó chạy thế nào.

Cái này bản chất cũng là tìm min1, min2, … như selection thôi :smiley: selection dễ đọc hơn vì nó có tìm minIndex với swap là hết rồi. Nhiêu đây là thớt tự code cũng đc :smiley:

1 Like

Bạn học cấu trúc dữ liệu và giải thuật đi, đọc phần thuật toán sắp xếp ý, nó rất đơn giản thôi.

void selectionSort(int arr[], int num) {

	for (int i = 0; i < num - 1; ++i) {

		int minPos = i;

		for (int j = i + 1; j < num; ++j) {

			if (arr[j] < arr[minPos]) {

				minPos = j;
			}
		}

		if (minPos != i) {

			int temp = arr[minPos];
			arr[minPos] = arr[i];
			arr[i] = temp;
		}
	}
}

Insertion Sort cũng là một thuật toán sắp xếp dễ hình dung đó bạn. Tưởng tượng bạn đang chơi bài và muốn sắp xếp các quân bài từ nhỏ đến lớn.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?