Sắp xếp nổi bọt, sắp xếp nhanh

Viết chương trình nhập vào mảng số nguyên một chiều có n phần tử, sắp xếp mảng theo chiều tăng dần bằng thuật toán sắp xếp nổi bọt, sắp xếp nhanh, hiển thị danh sách vừa sắp xếp. Các bác xem sai ở đâu với.

#include "stdio.h"
#include "conio.h"
void nhap (int a[], int n) 
{ 	int i;
	printf("Nhap so phan tu cua mang: ", n);
	scanf("%d", &n);
	for (i=0; i<n; i++) 
	{
		printf("a[%d]=: ", i);
	    scanf("%d", a[i]);
	}
 } 
void xuat(int a[],int n)
{
	int i;
	printf("\nDay so sau khi sap xep");
	for(i=0; i<n; i++) 
        printf("%3d, ",a[i]);
}

void sxnb(int a[], int n)
{
	int i, j, tg;
    for(i = 0; i<n-1; i++) 
    for(j =n-1; j>i;j--) 
       if(a[j]>a[j-1]) 
       {
       	 tg=a[j];
       	 a[j]=a[j-1];
       	 a[j-1]=tg;
       } 
}
void sxn(int a[], int left, int right)
{  
     int i = left, j = right, tg;
 	 int pivot = a[(left + right) / 2]; 
 	 {  while (a[i] < pivot && i < right) i++; while (a[j] > pivot && j > left) j--; 
 	 	if (i <= j) 
 	 	{ 
 	 		a[i]=tg;
 	 		tg=a[j];
 	 		a[j]=tg;
 	 		 i++; 
 	 		 j--;
 	    } 
     }while (i <= j);
 	 if (left < j) sxn(a, left, j); 
 	 if (i < right) sxn(a, i, right);
}
main()
{
	int n,chon;
	int a[100];
	lai: printf("Menu\n====================================\n1.Sap xep nhanh\n2.Sap xep noi bot");
	printf("\nMoi ban chon:");
	scanf("%d",&chon);
	switch(chon)
	{
		case 1:
		{
		nhap(a, &n);
		sxnb(a, n);
	    xuat(a, n);
		break;
		}
		case 2:
		{
	    nhap(a, &n);
		sxn(a, 0, n-1);
		xuat(a, n);
		break;	
		}
	}	
}

Ở function nhap() phải là &a[i].

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