A simple android notes app made using Kotlin. You can create, update, read, and delete notes. Sort notes by title, created date, or updated date using Quick Sort Algorithm or Selection Sort Algorithm. Search notes by title and/or notes or filter them by category using Knuth Morris Pratt or Boyer Moore Algorithm.
- Download the "app-release.apk" from the "app/release/" folder
- Scan and install the app on your phone or emulator
- Open the app
- Kotlin Programming Language
- Room Database
- Android Studio / Android SDK
- KSP API
- Apache POI and XMLBeans
- Android SDK 24 or above
The program uses two sorting algorithms for sorting notes: Quick Sort and Selection Sort. Quick Sort is used for it's generally fast sorting time, while Selection Sort is used as a comparison for Quick Sort. Quick Sort is a sorting algorithm based on partitioning array into two arrays of relatively equal sizes. Quick Sort is best used when the pivot is the median of the array as it leads to an optimal partitioning. However, it is performs badly when the array is already sorted as it leads to an unbalanced partitioning. Selection Sort works by finding the maximum of the array, swapping it with the head of the array, and then Selection Sorting the resulting tail. It can be viewed as a unique case of Quick Sort where instead of partitioning the array into two arrays of relatively equal sizes, it partitions the array into a 1 element and n-1 element arrays. Because of that, Selection Sort is generally worse than Quick Sort.
The program uses two String Matching Algorithm for queries and filter: Knuth-Morris-Pratt (KMP) and Boyer-Moore (BM). Knuth-Morris-Pratt Algorithm works similarly to a brute force algorithm except that it shifts the pattern more intelligently. KMP is good at reading large strings/files as it never moves backwards. However, it doesn't perform well when the size of the alphabet or character variance is large. Boyer-Moore Algorithm is a string matching algorithm based on the looking-glass and character-jump technique. It looks for the last occurence of a character from the String in the Pattern and tries to shift the pattern accordingly. Boyer-Moore works better when the size of the alphabet or character variance is large as it allows for large jumps. However, it is worse when the size of the alphabet or character variance is small because the jump distance gets smaller.
- Main Menu
- Create Dialog
- Update Dialog
- Settings Menu
- Export/Import Menu
Ariel Herfrison




