View Single Post
Old 09-08-2008, 05:06   #2
darling
Rìu Sắt Đôi
 
darling's Avatar
 
Tham gia: Dec 2007
Bài: 270
VZD: 5.621
Điểm: 99/51 bài viết
Cool

mình nói sơ wa cho bạn hiểu nha.
Dùng vòng for thứ 1:
Đầu tiên mình cho mảng chạy trong vòng for( i=0; i<n; i++) như vậy chỉ cần gặp lẻ thì cứ đưa lên đầu (tức là cho số lẻ vừa tìm thấy nằm ngay vi trí a[0], dùng hàm lùi mảng nhé), thì cứ cho chạy hết vòng for thì giá trị lẻ đã bị đẩy lên trên và còn lại sẽ là chẵn thôi.
Dùng vòng for thứ 2:
Lưu ý: lúc này mảng đã sắp lẻ trc chẵn sau
trong for bạn cho 2 điều kiện:
if là lẻ thì tiến hành sắp xếp lại tăng dần
if là chẵn thì Giảm dần

http://it9x.co.cc
Code:
void duachanvedau(int a[], int k)
{
	int tam = a[k];
	for(int i = k ; i>0; i--)
	{
		a[i] = a[i-1];
	}
	a[0] = tam;
}
void sapxep(int a[], int n)
{
	int i,j,tam;
	int vitrichancuoi;
	for (i=0; i<n; i++)
	{
		if (a[i] %2 == 0)
		{
			duachanvedau(a,i); //vi tri i
		}
	}
        for (i=0;i<n;i++)
        {
              for (j=i+1; j<n;j++)
              {
                        if (a[i]%2==0 && a[j]%2==0 && a[i]>a[j])
                        {
                               tam = a[i];
                               a[i]  = a[j];
                               a[j] = tam; 
                        }
                        else if (a[i]%2!=0 && a[j] %2 !=0 && a[i]<a[j])
                        {
                               tam = a[i];
                               a[i]  = a[j];
                               a[j] = tam; 
                        }
              }
        }
}
lưu ý:
Điều kiện thứ 2: ko để else ko, nếu để else ko chỉ if lần đầu sai 1 điều kiện bên trong là else sẽ thực hiện (nhớ là mảng sắp theo lẻ chẵn nên sẽ có lúc lẻ và chẵn giao nhau, else if (... ) là để loại bỏ trường hợp đó)

http://it9x.co.cc -Freb
__________________
Kho tài liệu cho sinh viên ==>> http://taiachau.com/@rum/forumdisplay.php?f=1
Hỏi đáp lập trình C/C++ ==>> http://taiachau.com/@rum/forumdisplay.php?f=51
Kiếm $$$ đô online ==>> http://taiachau.com/@rum/forumdisplay.php?f=82
Khu thương mại tử do ==>> http://taiachau.com/@rum/forumdisplay.php?f=63

thay đổi nội dung bởi: darling, 02-09-2008 lúc 05:29
darling vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn