Posts Tagged Lập trình

iPhone: Thư viện request server HTTP/HTTPs

Trong lập trình iPhone, để kết nối server qua giao thức HTTP ta thường sử dụng lớp

NSURLConnection *connection;

NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:REQUEST_TIME_OUT] delegate:self];

Thư viện này được xây dựng sử dụng trên cơ sở của lớp NSURLConnection, có 2 lớp chính trong thư viện này:

Đọc tiếp »

%(count) bình luận

Java: Chuyển một chuỗi sang dạng mã Hexa

// table to convert a nibble to a hex char.
      static final char[] hexChar = { '0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
      public static String displayHexString(String s) {
            StringBuilder sb = new StringBuilder(s.length() * 5 - 1);
            for (int i = 0; i < s.length(); i++) {
                  char c = s.charAt(i);
                  sb.append('_');

                  // encode 16 bits as four nibbles

                  sb.append(hexChar[c >>> 12 & 0xf]);
                  sb.append(hexChar[c >>> 8 & 0xf]);
                  sb.append(hexChar[c >>> 4 & 0xf]);
                  sb.append(hexChar[c & 0xf]);
            }
            String str = sb.toString();
            str = str.replaceAll("_", "\\\\u");
            return str;
      }

Bạn nghĩ gì về bài viết này?

Thuật toán sắp xếp: Quick Sort (P.2)

Thuật toán Quick Sort
o Ý tưởng
Ta chọn một phần tử bất kỳ của mảng A giả sử đó là x
Lọc và chia mảng đó thành 3 mảng con:
– mảng A1: A1(i) <>
– mảng A2: A2(i) = x với mọi i
– mảng A3: A3(i) > x với mọi i
Sau đó ta lại tiếp tục các bước trên với mảng A1 và A3. Công việc này còn được gọi là phân hoạch nên Quick Sort còn được gọi là sắp xếp theo phương pháp phân hoạch
Giải thuật này sẽ được cài đặt theo phương pháp đệ qui

o Mô tả thuật toán
– Input: Mảng A[1..n]
– Output: Mảng A có thứ tự tăng dần
– Method:

function quickSort(A, lower, upper){
x = A[(lower + upper) / 2];
i = lower;
j = upper;
do{
while(A[i] <>
i ++;
while (A[j] > x)
j –;
if (i <= j){
swap(A[i], A[j]);
i ++;
j –;
}
}while(i <= j);
if (j > lower)
quickSort(A, lower, j);
if (i <>
quickSort(A, i, upper);
}

o Độ phức tạp tính toán: O(nlnn)

Thuật toán Quick Sort tốt nhất trong trường hợp dãy hầu như được sắp xếp và với n khá lớn. Vì vậy ta thường dung Quick Sort trong giai đoạn đầu để phân hoạch, khi đoạn con đủ nhỏ ta sẽ dùng các phương pháp khác để sắp xếp

,

Bạn nghĩ gì về bài viết này?

Sắp xếp mảng (P.1)

Sắp xếp mảng số nguyên một chiều A theo thứ tự tăng dần (hoặc giảm dần)

1.Thuật toán sắp xếp kiểu chọn lựa
o Ý tưởng
Giả sử ta đã sắp xếp mảng cho đến phần tử thứ i – 1 theo thứ tự tăng dần.
Ở bước thứ i ta chọn phần tử có giá trị nhỏ nhất trong đoạn A[i..n], giả sử A(j), ta thực hiện đổi chỗ A(i) với A(j)

o Mô tả thuật toán
– Input: Mảng A[1..n]
– Output: Mảng A có thứ tự tăng dần
– Method:

function sort(A){
for(i = 1; i < n; i++){
j = i;
for(k = i + 1; k <= n; k ++)
if (A[k] < A[j])
j = k;
swap(A[i], A[j]);
}
}

o Độ phức tạp tính toán: O(n2)

Đọc tiếp »

,

Bạn nghĩ gì về bài viết này?

Tìm kiếm trên mảng

1. Thuật toán tìm kiếm nhị phân
o Bài toán

Cho một mảng các số được sắp xếp tăng dần (giảm dần), cho một giá trị x, xác định xem x có thuộc mảng đó hay không

o Ý tưởng
Giả sử mảng sắp xếp tăng dần A, ta chia đôi mảng, so sánh x với phần tử ở giữa A[mid], nếu:
– x == A[mid] : return true
– x > A[mid]: tiếp tục tìm x trong nửa mảng bên phải
– x < A[mid]: tiếp tục tìm x trong nửa mảng bên trái o Mô tả thuật toán
– Input: mảng A[1..n] giá trí x
– Output:
+ x thuộc A: true
+ else false
– Method :

function binarySearch(A, x, first, last){
if (first > last)

return false;
else{
mid = (first + last) / 2;
if (x == A[mid])
return true;
else if (x < A[mid]) return binarySearch (A, x, first, mid – 1); else return binarySearch (A, x, mid + 1, last); } }


o Độ phức tạp tính toán: O(lgn)

Đọc tiếp »

,

Bạn nghĩ gì về bài viết này?

Kiến trúc MVC

Kiến trúc Model-View-Controller(MVC) là gì?

Kiến trúc MVC là việc chia tất cả mục của một ứng dụng ra làm ba thành phần (component) khác nhau Model, View và Controller. Các thành phần của kiến trúc MVC một trách nhiệm duy nhất và không phụ thuộc vào các thành phần khác. Những sự thay đổi trong một thành phần sẽ không có hoặc là có rất ít ảnh hưởng đến các thành phần khác. Các trách nhiệm của mỗi thành phần là


Model: Model được giao nhiệm vụ cung cấp dữ liệu cho cơ sở dữ liệu và lưu dữ liệu vào các kho chứa dữ liệu. Tất cả các nghiệp vụ logic được thực thi ở Model. Dữ liệu vào từ người dùng sẽ thông qua View được kiểm tra ở Model trước khi lưu vào cơ sở dữ liệu. Việc truy xuất, xác nhận, và lưu dữ liệu là một phần của Model

Đọc tiếp »

,

2 phản hồi