Terdapat pertimbangan dalam memilih algoritma, yang pertama adalah algoritma harus benar, yang berarti algoritma akan memberikan keluaran yang sesuai yang diharapkan dari sejumlah masukan yang diberikan. Kedua yaitu kita harus mengetahui seberapa baik hasil yang dicapai oleh algoritma tersebut. Hal ini penting pada algoritma yang memerlukan aproksimasi hasil yaitu algoritma yang hasilnya hanya berupa pendekatan, algoritma yang baik harus memberikan hasil yang sedekat mungkin dengan nilai yang sebenarnya. Ketiga yaitu efisiensi, dapat ditinjau dari dua hal yaitu efisiensi waktu dan memori, meskipun algoritma memberikan keluaran yang benar tetapi harus menunggu lama untuk mendapatkan hasil nya maka biasanya algoritma tersebut tidak akan menjadi pilihan utama,begitu juga dengan memori, semakin besar memori yang digunakan maka semakin jelek algoritma tersebut.
Berikut ini beberapa ciri-ciri algoritma menurut Donald E. Knuth.
1. Finiteness(keterbatasan), algoritma harus berakhir setelah mengerjakan sejumlah langkah proses.
2. Definiteness(kepastian, langkahnya harus didefinisikan secara tepat tidak ambigu.
3. Input(masukan), algoritma memiliki nol atau lebih data masukan.
4. Output(keluaran), memiliki nol atau lebih hasil keluaran.
5. Efectiveness(efektivitas), algoritma harus efektif.
Sifat Algoritma yaitu:
1. Tidak menggunakan sintaks dari suatu bahasa pemrogaraman tertentu.
2. Tidak tergantung pada bahasa pemrograman apapun.
3. Notasi nya dapat digunakan pada bahasa pemrograman apapun.