các tiêu chuẩn đánh giá cấu trúc dữ liệu
-phản ánh đúng thực tế
-phù hợp với các thao tác trên đó
-tiết kiệm tài nguyên hệ thống
các thuộc tính của 1 kdl bao gồm
-các loại dữ liệu cơ bản thường là các loại dữ liệu đơn giản không có cấu trúc, chúng thường là các giá trị vô hướng như các số nguyên số thực, các kí tự, các giá trị logic... các loại dữ liệu này do tính thông dụng và đơn giản của mình, thường được các ngôn ngữ lập trình cấp cao xây dựng sẵn như 1 thành phần của ngôn ngữ để giảm nhẹ công việc cho người lập trình, vì vậy chúng ta còn gọi chúng là các kiểu dữ liệu định sẵn
-thông thường các kiểu dữ liệu cơ bản bao gồm:
+kiểu có thứ tự rời rạc: số nguyên, ký tự, logic, liệt kê, miền con...
+kiểu không rời rạc:số thực
tùy vào ngôn ngữ lập trình mà các kiểu dữ liệu định sẵn có thể khác nhau đôi chút, với ngôn ngữ C các kiểu dữ liệu này chỉ gồm các số nguyên, số thực và kí tự, và theo quan điểm của C, kiểu kí tự thực chất cũng là kiểu số nguyên về mặt lưu trữ. ngoài ra kiểu kiểu logic đúng(TRUE) và giá trị logic sai(FALSE) được biểu diễn trong C như là các giá trị nguyên khác zero và zero, trong khi đó pascal định nghĩa tất cả các kiểu dữ liệu cơ sở đã liệt kê ở trên và phân biệt chúng 1 cách chặt chẽ.
-một số điều đáng lưu ý đối với các kiểu dữ liệu cơ bản trong C là kiểu kí tự (char) có thể dùng theo hai cách( số nguyên 1 byte hoặc ký tự). ngoài ra C không định nghĩa kiểu logic mà đồng nhất nó với 1 giá trị nguyên. như vậy thực chất trong C cho cùng chỉ có hai kiểu dữ liệu cơ bản là số nguyên và số thực, tức là chỉ có dữ liệu số, hơn nữa các số nguyên trong C được thể hiện trong 3 cơ số hệ thập phân, hệ thập lục phân và hệ bát phân, nhờ những quan điểm trên C rất được nhiều lập trình viên chuyên nghiệp sử dụng
-các kiểu dữ liệu cơ sở thường rất đơn giản và không thể hiện rõ sự tổ chức dữ liệu trong 1 cấu trúc, thường chỉ được dùng làm nền để xây dựng các kiểu dữ liệu phức tạp khác
3) các kiểu dữ liệu có cấu trúc
các kiểu dữ liệu cơ sở thường không đủ để phản ánh tự nhiên và đầy đủ bản chất của sự vật thực tế, dẫn đến nhu cầu phải xây dựng các kiểu dữ liệu mới dựa trên việc tổ chức, liên kết các thành phần dữ liệu  mới dựa trên việc tổ chức, liên kết các kiểu thành phần dữ liệu đã được định nghĩa, những kiểu dữ liệu được xây dựng như thế được gọi là kiểu dữ liệu có cấu trúc. đa số các ngôn ngữ lập trình đều cài đặt sẵn những kiểu dữ liệu có cấu trúc cơ bản như mảng, chuỗi, tập tin, bản ghi.. và cung cấp cơ chế cho lập trình viên định nghĩa kiểu dữ liệu mới
4. một số kiểu dữ liệu có cấu trúc cơ bản
a. kiểu chuỗi kí tự
chuỗi kí tự là 1 trong những kiểu dữ liệu có cấu trúc đơn giản nhất và thường các ngôn ngữ lập trình đều định nghĩa nó như 1 kiểu dữ liệu cơ bản. do tính chất thông dụng của kiểu kí tự các ngôn ngữ lập trình thường cung cấp sẵn 1 bộ hàm thư viện xử lý trên kiểu dữ liệu này, đặc biệt trong C thư viện các hàm xử lý chuỗi kí tự rất đa dạng và phong phú. các hàm này được đặt trong thư viện string.lib của C
-chuỗi kí tự trong C được cấu trúc như 1 chuỗi liên tiếp các kí tự kết thúc bằng ký tự có mã ASCII bằng 0(NULL charater)
b) kiểu union là 1 dạng cấu trúc dữ liệu đặc biệt của ngôn ngữ C nó rất giống với kiểu struct. chỉ khác nhau 1 điều là trong kiểu union, các trường được phép chung 1 vùng nhớ ta có thể truy xuất dưới dạng khác nhau
việc dùng kiểu union rất có lợi khi cần khai báo các CTDL  mà nội dung của nó thay đổi tùy trạng thái
đánh giá độ phức tạp của giải thuật
hầu hết các bài toán đều có nhiều giải thuật khác nhau để giải quyết chúng, như vậy làm sao để chọn được sự cài đặt tốt nhất, đây là 1 lĩnh vực được phát triển tốt trong nghiên cứu về khoa học máy tính, khi nói đến độ hiểu quả của 1 thuật toán thì người ta quan tâm đến chi phí cần dùng để thực hiện nó. Chi phí này để thể hiện qua việc sử dụng tài nguyên như bộ nhớ, thời gian sử dụng CPU... chúng ta có thể đánh giá thuật toán bằng phương pháp thực nghiệm thông qua việc cài đặt thuật toán rồi chọn bộ dữ liệu thử nghiệm
chi phí
hằng số:hầu hết các chỉ thị của chương trình đều được thực hiện 1 lần hay nhiều nhất chỉ 1 vài lần là hoàn cảnh phấn đấu để đạt được trong việc thiết kế thuật toán
logN:khi thời gian chạy của chương trình là logarit thì thời gian chạy của chương trình tiến chậm khi N lớn dần, thời gian chạy của chương trình mà thời gian chạy thuộc loại này  xuất hiện trong các chương trình mà giải 1 bài toán lơn bằng cách chuyển nó thành 1 bài toán nhỏ hơn, bằng cách cắt bỏ 1 hằng số nào đó, với mục đích của chúng ta thời gian chạy được xem là nhỏ hơn 1 hằng số lớn, cơ số logarit làm thay đổi cơ số đó nhưng không nhiều
tương tự N, NlogN,n^2,n^3,2^n
TÌM kIẾM VÀ SẮP XẾP
các giải thuật tìm kiếm nội
có 2 giải thuật thường được áp dụng là tìm kiếm tuyến tính và tìm kiếm nhị phân
tìm kiếm nhị phân trong trường hợp đã được sắp xếp có thứ tự