Read-only archive. Login and posting are unavailable.
Reply
 
Thread Tools
  #1  
Old 12-11-2010, 20:58
antonixic's Avatar
Member
Join Date: 10-2008
Posts: 61
[lập trình C++] Sắp xếp mảng

Mod cho em sống tới hết hôm nay, mai em thi rồi ạh :(
Các bác giúp em giải bài này với ạh
Yêu cầu đề bài: cho mảng 1 chiều ngẫu nhiên, sắp xếp sao cho phần tử âm về đầu dãy, 0 về giữa và dương về cuối dãy. Không thay đổi thứ tự các phần tử cùng loại và không dùng mảng phụ.

Ví dụ:
mảng: -3 5 8 0 -4 -2 0 1 0 -5 -1
sau khi xếp: -3 -4 -2 -5 -1 0 0 0 5 8 1

p/s: có bác nào mai thi Học viện Tp HCM hông

em có code phần sắp xếp dương về cuối, âm về đầu, các bác xem thử có tí ánh sáng le lói nào không nha

Code:
mảng:            -3  5   8 -4 -2  1  -5 -1
sau khi xếp:    -3 -4 -2 -5 -1  5   8  1

int check(int k)
{
	if(k <0)
		return -1;
	if(k>0)
	        return 0;
}
void sapxep(array a, int n)
{
	bool flag;
	int i=0;
	do
	{
		flag =false;
		for(int j=n-1;j>i;j--)
		{
			if(check(a)<check(a[j-1]))
			{
				int temp=a;
				a=a[j-1];
				a[j-1]=temp;
				flag=true;
			}
		}
		i++;
	}while(flag);
}
Reply With Quote
  #2  
Old 12-11-2010, 20:59
TranTienHung's Avatar
Đã tốn tiền
Join Date: 06-2008
Posts: 8,532
Re: [lập trình C++] Sắp xếp mảng

google buble sort đi
__________________
[CENTER][COLOR="Blue"][SIZE="4"]No comment[/SIZE][/COLOR][/CENTER]
[QUOTE]Steam ID: http://steamcommunity.com/id/thantrom_2234/[/QUOTE]
Reply With Quote
  #3  
Old 12-11-2010, 21:01
duyminh1987's Avatar
Senior Member
Join Date: 07-2010
Posts: 2,717
Re: [lập trình C++] Sắp xếp mảng

Quote:
Originally Posted by TranTienHung View Post
google buble sort đi
đó là sắp xếp tăng dần, trông cái này giống dùng queue ( hàng đợi ) thì đúng hơn. Mà không cho dùng mảng phụ àh ???!!
Reply With Quote
  #4  
Old 12-11-2010, 21:02
flsfls's Avatar
Member
Join Date: 09-2008
Posts: 77
Re: [lập trình C++] Sắp xếp mảng

Đơn giản là bạn lập ra 3 mảng con, một mảng lưu phần tử âm, một mảng lưu phần tử 0, một mảng lưu phẩn tử dương sau đó duyệt mảng ban đầu từ trái sang phải, gặp phần tử thuộc loại nào thì tống vào mảng loại ấy. Sau đó ghép 3 mảng lại là đc thôi
__________________
Người ra đi đầu không ngoảnh lại
Sau lưng thềm nắng lá rơi đầy
[QUOTE=invisible;22914343]Quen năm 1999, yêu năm 2002, cưới năm 2007, có rất nhiều thứ mà cả 2 đã cùng nhau vượt qua, tớ và vợ tớ khi yêu nhau đều là mối tình đầu.[/QUOTE]
Reply With Quote
  #5  
Old 12-11-2010, 21:04
Senior Member
Join Date: 06-2007
Posts: 4,881
Re: [lập trình C++] Sắp xếp mảng

Quote:
Originally Posted by flsfls View Post
Đơn giản là bạn lập ra 3 mảng con, một mảng lưu phần tử âm, một mảng lưu phần tử 0, một mảng lưu phẩn tử dương sau đó duyệt mảng ban đầu từ trái sang phải, gặp phần tử thuộc loại nào thì tống vào mảng loại ấy. Sau đó ghép 3 mảng lại là đc thôi
Không dùng mảng phụ
Reply With Quote
  #6  
Old 12-11-2010, 21:05
antonixic's Avatar
Member
Join Date: 10-2008
Posts: 61
Re: [lập trình C++] Sắp xếp mảng

Quote:
Originally Posted by TranTienHung View Post
google buble sort đi
buble thay đổi thứ tự (vì nó sắp xếp) bác ạh

Quote:
Originally Posted by duyminh1987 View Post
đó là sắp xếp tăng dần, trông cái này giống dùng queue ( hàng đợi ) thì đúng hơn. Mà không cho dùng mảng phụ àh ???!!
vâng, ko cho dùng mảng phụ mới chết chứ
Quote:
Originally Posted by flsfls View Post
Đơn giản là bạn lập ra 3 mảng con, một mảng lưu phần tử âm, một mảng lưu phần tử 0, một mảng lưu phẩn tử dương sau đó duyệt mảng ban đầu từ trái sang phải, gặp phần tử thuộc loại nào thì tống vào mảng loại ấy. Sau đó ghép 3 mảng lại là đc thôi
không dùng mảng phụ bác ạh
Reply With Quote
  #7  
Old 12-11-2010, 21:08
cuoc_song's Avatar
Đã tốn tiền
Join Date: 03-2007
Posts: 2,742
Re: [lập trình C++] Sắp xếp mảng

Bài này có độ phức tạp n^2, hơi ngán
đi từ đầu đến cuối, gặp thằng nào >=0 thì thêm 1 vòng while típ để tìm thằng nào âm, rồi lưu thằng âm vào 1 biến chờ rồi dịch đoạn đó lên 1 ô, sau đó chèn thằng âm ngược lại dãy, tương tự cho thằng nào = 0. Thế là xong rùi
Reply With Quote
  #8  
Old 12-11-2010, 21:08
Dark_D's Avatar
Member
Join Date: 07-2008
Posts: 78
Re: [lập trình C++] Sắp xếp mảng

Dùng bubble sort nhưng thay đổi điều kiện if(a[i]>a) thành mấy cái điều kiện (a[i]==0&&a<0) thì đổi chỗ, tương tự làm thêm mấy cái if khác (a[i]<0&&a>0),(a[i]>0&&a=0) nữa thì đc kết quả không nhỉ
Lười làm quá =.=!
__________________
[CENTER][B]Ngây thơ trong sáng - thâm sâu trong tối.[/B][/CENTER]
Reply With Quote
  #9  
Old 12-11-2010, 21:08
flsfls's Avatar
Member
Join Date: 09-2008
Posts: 77
Re: [lập trình C++] Sắp xếp mảng

Sory các bác. Em chưa đọc kĩ là ko được dùng mảng phụ
__________________
Người ra đi đầu không ngoảnh lại
Sau lưng thềm nắng lá rơi đầy
[QUOTE=invisible;22914343]Quen năm 1999, yêu năm 2002, cưới năm 2007, có rất nhiều thứ mà cả 2 đã cùng nhau vượt qua, tớ và vợ tớ khi yêu nhau đều là mối tình đầu.[/QUOTE]
Reply With Quote
  #10  
Old 12-11-2010, 21:10
demonhunt's Avatar
Member
Join Date: 08-2008
Posts: 83
Re: [lập trình C++] Sắp xếp mảng

Quote:
Originally Posted by Dark_D View Post
Dùng bubble sort nhưng thay đổi điều kiện if(a[i]>a) thành mấy cái điều kiện (a[i]==0&&a<0) thì đổi chỗ, tương tự làm thêm mấy cái if khác (a[i]<0&&a>0),(a[i]>0&&a=0) nữa thì đc kết quả không nhỉ
Lười làm quá =.=!
Bác này đúng nè, đang định post
Reply With Quote
Reply

« Previous Thread | Next Thread »

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


All times are GMT +7. The time now is 11:05.