![]() |
|
|
Thread Tools |
|
#11
|
|||
|
|||
|
Re: [lập trình C++] Sắp xếp mảng
Quote:
__________________
[CENTER][B]Ngây thơ trong sáng - thâm sâu trong tối.[/B][/CENTER] |
|
#12
|
|||
|
|||
|
Re: [lập trình C++] Sắp xếp mảng
Quote:
|
|
#13
|
|||
|
|||
|
Re: [lập trình C++] Sắp xếp mảng
code day. em test thu thay co ve dung tuy hoi dai ti
#include #include /* *j luu so phan tu am da duoc sap xep */ void main() { int array[11] = {-3, 5, 8, 0, -4, -2, 0, 1, 0, -5, -1}; int i, j,k,l, tmp; j = -1, k = 0; printf("phan tu mang ban dau\n"); for(i = 0; i<11; i++) printf("%d ", array[i]); /* dua cac phan tu am ve dau mang*/ for(i = 0; i<11; i++) { if(array[i] < 0) { j++; if(i == j) { continue; } tmp = array[i]; for(l = i; l>=j; l--) { array = array[l-1]; } array = tmp; } } /* dua cac phan tu 0 ve giua mang*/ for(i = j; i<11; i++) if(array[i] == 0) { j++; if(i == j) continue; tmp = array[i]; for(l = i; l>=j; l--) array = array[l-1]; array = tmp; } /* in ra phan tu mang sau khi sap xep*/ printf("\nphan tu mang sau khi sap xep\n"); for(i = 0; i<11; i++) printf("%d ", array[i]); } ket qua dinh kem
__________________
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] |
|
#14
|
|||
|
|||
|
Re: [lập trình C++] Sắp xếp mảng
Gõ trong C#, máy ko có C++ =.=! Bạn xem thử nhé =.+!
Quote:
__________________
[CENTER][B]Ngây thơ trong sáng - thâm sâu trong tối.[/B][/CENTER] |
|
#15
|
|||
|
|||
|
Re: [lập trình C++] Sắp xếp mảng
Ko cần dùng bubble sort đâu, chia công việc 2 phần gom vào 1 lặp là xong. Nhìn lặp nhiều vậy chứ thật ra chạy nhanh vì chỉ số dòng lặp ngoài cùng là i nó vẫn tăng liên tục trong các vòng lặp con nên chạy rất mau (Bạn debug sẽ thấy) .
Code:
#include
using namespace std;
void Swap(int &a,int &b)
{
int t=a;
a=b;
b=t;
}
int main()
{
int a[]={-3, 5, 8, 0, -4, -2, 0, 1, 0, -5, -1,6,-1,0,-2,3,-1,-5};
int n=sizeof(a)/sizeof(a[0]);
int i,j;
//Cờ zero chưa bật tức là chưa đến lượt xử lý dồn số 0
bool Zero=false;
for( i=0;i xử lý dồn số âm
{
while(j>i)
{
//a chạy đến khi gặp số không âm đầu tiên
while(a[i]<0) i++;
//j chạy đến khi gặp số âm đầu tiên
while(a>=0) j--;
if(j>i)//2 chỉ số vẫn chưa đụng nhau
Swap(a[i],a);//Swap để dồn số âm đằng sau lên
}
//xong phần số âm thì bật cờ zero bắt đầu dồn số 0 vào tiếp
Zero=true;
}
else
{
//bắt đầu xử lý số 0
while(j>i)
{
//i dừng khi gặp số 0 đầu tiên
while(a[i]==0) i++;
//j dừng khi gặp số dương đầu tiên
while(a>0) j--;
//Nếu 2 chỉ số chưa đụng nhau
if(j>i) Swap(a[i],a);//Swap đề dồn 0 lên trước (phần giữa mảng)
}
//hoàn thành thì break
break;
}
}
return 0;
}
__________________
PC: [COLOR="Red"]Ryzen 9 3900X[/COLOR] | [COLOR="Teal"]X570 Strix E[/COLOR] | [COLOR="Orange"]Corsair Vegeance Pro 32GB Bus 3000[/COLOR] | [COLOR="Lime"]2070 Super Strix OC[/COLOR] | [COLOR="Magenta"]860 Evo 512GB[/COLOR] | [COLOR="Green"]CoolerMaster ML360R[/COLOR] | [COLOR="Blue"]Andyson 1200W Platinum[/COLOR] Gears: [COLOR="Cyan"]Strix Flare Red Switch[/COLOR] | [COLOR="Teal"]ROG Pugio[/COLOR] |
| untouchable |
| View Public Profile |
| Find all posts by untouchable |
|
#16
|
|||
|
|||
|
Re: [lập trình C++] Sắp xếp mảng
cái này chắc làm 2 vòng for là xong thôi, cứ đến số nào <0 thì swap nó với số bên phải nó là đc, nghĩ thế, sai các bác đừng ném gạch
|
|
#17
|
||
|
||
|
Re: [lập trình C++] Sắp xếp mảng
Không cho dùng array thì dùng linked list based queue, quất 3 cái queue là xong xuôi.
__________________
[QUOTE=lovestone01;22221304]Mình chỉ biết lực lượng xe dù của VN ta khá mạnh so với thế giới còn lính dù biệt kích thì chắc không có quá , giữ nhà chưa xong nhảy đi đâu ?:)[/QUOTE] [QUOTE=học mà chơi;22221322]xe dù là của binh chủng nào thế bác ? thiết giáp xa à?[/QUOTE] =)) |
|
#18
|
|||
|
|||
|
Re: [lập trình C++] Sắp xếp mảng
@Các bác ở trên: cảm ơn các bác nhọc công code, em đang test thử
![]() Quote:
|
|
#19
|
|||
|
|||
|
Re: [lập trình C++] Sắp xếp mảng
check it out, easy and understood
![]() Code:
#include "conio.h"
#include
using namespace std;
int main(void)
{
//int n=11;
//int a[11]={-3,5,8,0,-4,-2,0,1,0,-5,-1};
//for(int i=0;i>n;
int * a=new int ;
for(int i=0;i>a[i];}
for(int i=0;i0;i--){
for(int j=i-1;j>=0;j--){if(a[i]==00&&a>0){swap(a[i],a);}}
}
for(int i=0;i<n;i++){cout<<a[i]<<" ";}cout<<endl;
for(int i=0;i<n-1;i++){
for(int j=i+1;j<n;j++){if(a[i]==0&&a<0){swap(a[i],a);}}
}
for(int i=0;i<n;i++){cout<<a[i]<<" ";}cout<<endl;
return 1;
}
__________________
.......... |
|
#20
|
||
|
||
|
Re: [lập trình C++] Sắp xếp mảng
Mềnh là mềnh chưa thử nhưng thấy các bợn làm có swap là nghi lắm, swap sẽ làm mất thứ tự các số cùng loại trong dãy. Cái này phải dồn toa mới được
|
![]() |
|
|