Tìm vị trí xuất hiện của mảng

Đề bài:

  1. Nhập/xuất mảng (nhập tự động). Nhập n.
  2. Sắp xếp mảng:
    • Interchange
    • Insertion
    • Selection
    • Bubble
  3. Tìm kiếm vị trí xuất hiện:
    • Tuyến tính
    • Nhị phân

Do lớp 10 em lười học môn lập trình C quá vì k có hứng nên đã rớt môn giờ phải học lại mà vở thì mất e thì chả biết gì bác nào có lòng tốt giúp em với :< đề thi chỉ có v thôi em làm đc hết rồi còn cái tìm vị trí thì em chịu mong mn giúp đỡ mình
code của mình:

#include <stdio.h>
#include <conio.h>
void nhap(int a[], int& n)
{
    printf("nhap phan tu cua mang :");
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        printf("a[%d]=", i);
        scanf("%d", &a[i]);
    }
}
void xuat(int a[], int n)
{
    for (int i = 0; i < n; i++)
        printf("%4d", a[i]);
}
void swap(int& e, int& f)
{
    int p = e;
    e = f;
    f = p;
}
void SelectionSort(int a[], int n)
{
    for (int i = 0; i < n - 1; i++) {
        int min = i;
        for (int j = i + 1; j < n; j++)
            if (a[min] > a[j])
                min = j;
        swap(a[i], a[min]);
    }
}
void InsertionSort(int a[], int n)
{
    int pos, i, x;
    for (i = 0; i < n; i++) {
        pos = i - 1;
        x = a[i];
        while (pos >= 0 && a[pos] > x) {
            a[pos + 1] = a[pos];
            pos--;
        }
        a[pos + 1] = x;
    }
}
void BubbleSort(int a[], int n)
{
    int i, j;
    for (int i = 0; i < n - 2; i++)
        for (int j = n - 1; j > i; j--)
            if (a[j] < a[j - 1])
                swap(a[j], a[j - 1]);
}
void InterchangeSort(int a[], int n)
{
    for (int i = 0; i < n - 1; i++)
        for (int j = i + 1; j < n; j++)
            if (a[i] > a[j])
                swap(a[i], a[j]);
}
int timkiem(int a[], int n, int x)
{
    for (int i = 0; i < n; i++)
        if (a[i] == x)
            return 1;
    return 0;
}
int BinarySearch(int a[], int n, int x)
{
    int left = 0, right = n - 1, mid;
    while (left <= right) {
        mid = (left + right) / 2;
        if (x == a[mid])
            return 2; //Tìm th?y x t?i mid
        if (x < a[mid])
            right = mid - 1;
        else
            left = mid + 1;
    }
    return 0; // trong dãy không có x
}
int main()
{
    int i, a[100], n, x;
    nhap(a, n);
    printf("nhap phan tu can tim ");
    scanf("%d", &x);
    int b = timkiem(a, n, x);
    if (b == 1) {
        printf("phuong phap tim kiem tuyen tinh %d co trong mang \n ", x);
    }
    else {
        printf("phuong phap tim kiem tuyen tinh %d ko co trong mang \n", x);
    }
    int c = BinarySearch(a, n, x);
    if (c == 2) {
        printf(" phuong phap tim kiem nhi phan %d co trong mang \n", x);
    }
    else {
        printf("phuong phap tim kiem nhi phan %d ko co trong mang \n", x);
    }
    SelectionSort(a, n);
    printf("\nphuong phap  SelectionSort \n");
    xuat(a, n);
    InsertionSort(a, n);
    printf("\nphuong phap InsertionSort\n");
    xuat(a, n);
    BubbleSort(a, n);
    printf("\nphuong phap BubbleSort\n");
    xuat(a, n);
    InterchangeSort(a, n);
    printf("\nphuong phap  InterchangeSort\n");
    xuat(a, n);
    _getch();
}

mình cảm ơn

1 Like
#include<stdio.h>
#include<conio.h>
void nhap(int a[], int &n)
{
	printf("nhap phan tu cua mang :");
	scanf("%d", &n);
	for (int i = 0; i<n; i++)
	{
		printf("a[%d]=",i);
		scanf("%d",&a[i]);
	}
}
void xuat(int a[], int n)
{
	for(int i=0;i<n;i++)
	printf("%4d",a[i]);
}
void swap(int &e, int &f)
{
	int p = e;
	e = f;
	f = p;
}
void SelectionSort(int a[], int n)
{
	for (int i = 0; i < n - 1; i++)
	{
		int min = i;
		for (int j = i + 1; j < n; j++)
			if (a[min] > a[j])
				min = j;
		swap(a[i], a[min]);
	}
}
void InsertionSort(int a[], int n)
{
	int pos, i, x;
	for (i = 0; i < n; i++)
	{
		pos = i - 1;
		x = a[i];
		while (pos >= 0 && a[pos] > x)
		{
			a[pos + 1] = a[pos];
			pos--;
		}
		a[pos + 1] = x;
	}
}
void BubbleSort(int a[], int n)
{
	int i, j;
	for (int i = 0; i<n - 2; i++)
		for (int j = n - 1; j>i; j--)
			if (a[j] < a[j - 1])
				swap(a[j], a[j - 1]);
}
void InterchangeSort(int a[], int n)
{
	for (int i = 0; i < n - 1; i++)
		for (int j = i + 1; j < n; j++)
			if (a[i]>a[j])
				swap(a[i], a[j]);
}
int BinarySearch(int a[],int n,int x )
{ 
	int  left =0, right = n-1, mid;
	while (left <= right)	
	{	
		mid = (left + right)/2;
		if (x == a[mid])  return 2;//Tìm th?y x t?i mid
		if (x<a[mid])  right = mid -1;
		else           left  = mid +1;
	}
	return 0; // trong dãy không có x
}
int LinearSearch1(int Day[],int n,int x)
{
	int vitri=0;
	while(vitri<n&&Day[vitri]!=x) vitri++;
		if(vitri==n) return 0;
		else return 1;
}
int LinearSearch2(int Day[],int n,int x)
{
	int vitri=0;
	while(vitri<n&&Day[vitri]!=x) vitri++;
	if(vitri==n) return -1;
	else return vitri;
}
int a[10]={1,2,3,4,5,6,7,8,9,10};
int X,n=10;
int main()
{

	SelectionSort(a, n);
	 printf("\nphuong phap  SelectionSort \n");
	  xuat(a, n);
	  	InsertionSort(a, n);
	 printf("\nphuong phap InsertionSort\n");
	  xuat(a, n);
	BubbleSort(a, n);
	 printf("\nphuong phap BubbleSort\n");
	  xuat(a, n);
	InterchangeSort(a, n);
	 printf("\nphuong phap  InterchangeSort\n");
	  xuat(a, n);
	printf("\nNhap x can tim: ");
	scanf("%d",&X);
	int c = BinarySearch(a, n, X);
if (c == 2)
{
	printf("ket qua tim kiem nhi phan %d co trong mang \n",X);
}
	else
	{
		printf("ket qua tim kiem nhi phan %d ko co trong mang \n",X);
	}
	int d=LinearSearch1(a,n,X);
	if(d==1)
	{
		printf("Ket qua tim kiem tuyen tinh %d co trong mang ",X);
		printf("\n	%d o vi tri thu %d \n",X,LinearSearch2(a,10,X));
	}
	else
	{
		printf(" ket qua tim kiem tuyen tinh %d khong co trong mang \n",X);
	}
	
	  _getch();
}

Cảm ơn bạn chờ mãi k thấy ai rep hix :<

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