01/10/2018, 09:59

Sửa code tìm kiếm

em đang muốn tìm kiếm từ trên mảng. nhưng ở đây là mảng string chứ không phải mảng int. ai sửa code giùm em

#include <iostream>
#include <string.h>
#include <fstream>

using namespace std;
void swap(char a[], char b[])
{
	char t[20];
	strcpy(t,a);
	strcpy(a,b);
	strcpy(b,t);
}
void quick_sort(string s[],int l, int r)
{
	if (l>=r) return;
	int i=l, j=r;
	string x;
	x=s[(l+r)/2];
	while(i<=j)
	{
		while (s[i]<x) i++;
		while (s[j]>x) j--;
		if (i<=j)
		{
			swap(s[i],s[j]);
			i++;j--;
		}
	}
	quick_sort(s,l,j);
	quick_sort(s,i,r);
}
void Tim_nhi_phan (string a[] , int n , int x)
{
    int l = 0 , r = n - 1 , k;
    while (l<=r)
    {
        k = (l+r)/2;
        if(a[k]== x)
             return k;
        if(x<a[k])
                 r = k-1;
        else
             l = k+1;
    }
    return -1;
}

int main()
{
	string a[100];
	int m=0; string timkiem;
	//string str;
	ifstream Docfile("tudien.txt", ios::in);
	while(!Docfile.eof())
	{
		getline(Docfile, a[m]);
		m++;
	}
	Docfile.close();
	quick_sort(a, 0, m);
	for (int i=0; i < m; i++)
	{
		cout << a[i] << endl;
	}
	cout << "nhap tu ban can tim: ";
	cin >> timkiem;
}
HK boy viết 12:04 ngày 01/10/2018

Hàm swap thành swap 2 string, sửa hàm tìm nhị phân thành while(l < r)

Bài liên quan
0