Alat dalam talian untuk menyusun senarai item dalam urutan menaik atau menurun. Susun secara abjad atau nombor, buang duplikasi, sesuaikan pemisah, dan keluarkan sebagai teks atau JSON. Sesuai untuk organisasi data, analisis, dan tugas pemprosesan.
Penyusun Senarai adalah alat dalam talian yang serba boleh yang direka untuk menyusun senarai item dalam urutan menaik atau menurun. Ia menawarkan pelbagai kriteria penyusunan, termasuk penyusunan secara abjad dan numerik, serta menyediakan pilihan untuk menghapuskan pendua dan menyesuaikan pemisah yang digunakan untuk memisahkan item dalam senarai. Selain itu, alat ini menyokong output JSON untuk keserasian yang lebih baik dengan pelbagai sistem dan aplikasi.
Penyusun Senarai menggunakan algoritma penyusunan yang cekap untuk mengatur data input. Algoritma utama yang digunakan adalah:
Quicksort: Algoritma penyusunan yang cekap dan dalam tempat dengan kompleksiti masa purata O(n log n). Ia sangat berkesan untuk set data yang lebih besar.
Mergesort: Algoritma stabil dan pembahagian-dan-penaklukan dengan kompleksiti masa O(n log n) yang konsisten, menjadikannya sesuai untuk pelbagai jenis dan saiz data.
Untuk senarai yang lebih kecil (biasanya kurang daripada 10-20 elemen), alat ini mungkin menggunakan algoritma yang lebih sederhana seperti penyusunan sisipan, yang boleh lebih cekap untuk set data kecil kerana overhead yang lebih rendah.
Penyusun Senarai menawarkan dua mod penyusunan utama:
Penyusunan Secara Abjad: Mod ini menyusun item secara leksikografik, mempertimbangkan nilai Unicode bagi watak. Ia sesuai untuk senarai berasaskan teks dan mengikuti peraturan khusus lokasi untuk penyusunan yang tepat merentasi pelbagai bahasa.
Penyusunan Numerik: Mod ini mentafsir item sebagai nombor dan menyusunnya berdasarkan nilai numeriknya. Ia mengendalikan kedua-dua nombor bulat dan nombor perpuluhan.
Alat ini menyediakan pilihan untuk menghapuskan pendua daripada senarai. Apabila pilihan ini dipilih, hanya kejadian pertama bagi setiap item unik yang akan dikekalkan dalam output yang disusun. Ciri ini sangat berguna untuk membuat set atau menghapuskan data yang berlebihan.
Pengguna boleh menentukan pemisah yang digunakan untuk memisahkan item dalam senarai input. Pemisah yang biasa termasuk:
Pemilihan pemisah membolehkan fleksibiliti dalam format input dan integrasi yang mudah dengan pelbagai sumber data.
Selain daripada output teks yang dipisahkan, Penyusun Senarai menawarkan output JSON. Format ini sangat berguna untuk:
Output JSON adalah ideal apabila senarai yang disusun perlu digunakan oleh sistem perisian lain atau apabila mengekalkan jenis data asal adalah penting.
Berikut adalah contoh kod yang menunjukkan penyusunan senarai dalam pelbagai bahasa pengaturcaraan:
1def parse_input(input_string, delimiter=','):
2 return input_string.split(delimiter)
3
4def sort_list(input_list, sort_type='alphabetical', order='ascending', remove_duplicates=False):
5 if sort_type == 'numerical':
6 # Tukar kepada float untuk penyusunan numerik, mengabaikan nilai bukan numerik
7 sorted_list = sorted([float(x) for x in input_list if x.replace('.', '').isdigit()])
8 else:
9 sorted_list = sorted(input_list)
10
11 if remove_duplicates:
12 sorted_list = list(dict.fromkeys(sorted_list))
13
14 if order == 'descending':
15 sorted_list.reverse()
16
17 return sorted_list
18
19## Contoh penggunaan
20input_string = "pisang;epal;ceri;tarikh;epal"
21input_list = parse_input(input_string, delimiter=';')
22result = sort_list(input_list, remove_duplicates=True)
23print(result) # Output: ['epal', 'pisang', 'ceri', 'tarikh']
24
1function sortList(inputList, sortType = 'alphabetical', order = 'ascending', removeDuplicates = false) {
2 let sortedList = [...inputList];
3
4 if (sortType === 'numerical') {
5 sortedList = sortedList.filter(x => !isNaN(parseFloat(x))).map(Number);
6 }
7
8 sortedList.sort((a, b) => {
9 if (sortType === 'numerical') {
10 return a - b;
11 }
12 return a.localeCompare(b);
13 });
14
15 if (removeDuplicates) {
16 sortedList = [...new Set(sortedList)];
17 }
18
19 if (order === 'descending') {
20 sortedList.reverse();
21 }
22
23 return sortedList;
24}
25
26function sortListToJSON(inputList, sortType = 'alphabetical', order = 'ascending', removeDuplicates = false) {
27 const sortedList = sortList(inputList, sortType, order, removeDuplicates);
28 return JSON.stringify(sortedList);
29}
30
31// Contoh penggunaan
32const inputList = ['pisang', 'epal', 'ceri', 'tarikh', 'epal'];
33const result = sortList(inputList, 'alphabetical', 'ascending', true);
34console.log(result); // Output: ['epal', 'pisang', 'ceri', 'tarikh']
35
36const jsonResult = sortListToJSON(inputList, 'alphabetical', 'ascending', true);
37console.log(jsonResult); // Output: ["epal","pisang","ceri","tarikh"]
38
1import java.util.*;
2
3public class ListSorter {
4 public static List<String> sortList(List<String> inputList, String sortType, String order, boolean removeDuplicates) {
5 List<String> sortedList = new ArrayList<>(inputList);
6
7 if (sortType.equals("numerical")) {
8 sortedList.removeIf(s -> !s.matches("-?\\d+(\\.\\d+)?"));
9 sortedList.sort(Comparator.comparingDouble(Double::parseDouble));
10 } else {
11 sortedList.sort(String::compareTo);
12 }
13
14 if (removeDuplicates) {
15 sortedList = new ArrayList<>(new LinkedHashSet<>(sortedList));
16 }
17
18 if (order.equals("descending")) {
19 Collections.reverse(sortedList);
20 }
21
22 return sortedList;
23 }
24
25 public static void main(String[] args) {
26 List<String> inputList = Arrays.asList("pisang", "epal", "ceri", "tarikh", "epal");
27 List<String> result = sortList(inputList, "alphabetical", "ascending", true);
28 System.out.println(result); // Output: [epal, pisang, ceri, tarikh]
29 }
30}
31
Pembersihan Data: Menyusun dan menghapuskan pendua daripada set data besar dalam projek analisis data dan pembelajaran mesin.
Pengurusan Kandungan: Mengatur tag, kategori, atau tajuk artikel dalam sistem pengurusan kandungan.
Analisis Kewangan: Menyusun dan menganalisis transaksi kewangan atau data stok.
Pengurusan Inventori: Mengatur senarai produk mengikut nama, SKU, atau harga.
Penciptaan Bibliografi: Menyusun rujukan secara abjad untuk kertas akademik atau penerbitan.
Perancangan Acara: Mengatur senarai tetamu atau item penjadualan secara kronologi.
SEO dan Pemasaran Digital: Menyusun kata kunci atau pautan balik untuk analisis dan pembangunan strategi.
Walaupun Penyusun Senarai adalah alat yang serba boleh, terdapat alternatif untuk kes penggunaan tertentu:
Sistem Pengurusan Pangkalan Data: Untuk set data yang sangat besar, menggunakan pertanyaan SQL atau fungsi penyusunan khusus pangkalan data mungkin lebih cekap.
Perisian Hamparan: Alat seperti Microsoft Excel atau Google Sheets menawarkan fungsi penyusunan terbina dalam dengan antara muka grafik.
Alat Baris Perintah: Sistem berasaskan Unix menyediakan alat seperti sort
untuk manipulasi fail teks, yang mungkin lebih sesuai untuk tugas automasi dan skrip.
Bahasa Pengaturcaraan: Untuk pembangun, menggunakan fungsi penyusunan terbina dalam dalam bahasa seperti Python, JavaScript, atau Java mungkin lebih sesuai untuk integrasi ke dalam aplikasi yang lebih besar.
Konsep penyusunan telah menjadi asas kepada sains komputer sejak awal. Pencapaian utama termasuk:
Evolusi algoritma penyusunan mencerminkan landskap pengkomputeran yang berubah, dari mainframe awal kepada sistem teragih moden dan perkakasan khusus.
Apabila melaksanakan dan menggunakan Penyusun Senarai, adalah penting untuk mempertimbangkan kes-kes tepi dan senario berikut:
Senarai Kosong: Penyusun harus mengendalikan input kosong dengan baik, mengembalikan senarai kosong tanpa ralat.
Senarai Sangat Besar: Untuk senarai dengan berjuta-juta item, pertimbangkan untuk melaksanakan paginasi atau menggunakan algoritma penstriman untuk mengelakkan masalah memori.
Jenis Data Campuran: Apabila menyusun secara numerik, tentukan cara untuk mengendalikan entri bukan numerik (contohnya, mengabaikannya atau meletakkannya di awal/akhir senarai yang disusun).
Watak Unicode dan Antarabangsa: Pastikan pengendalian watak bukan ASCII yang betul dan pertimbangkan untuk menggunakan peraturan penyusunan khusus lokasi untuk penyusunan secara abjad.
Kepekaan Kes: Tentukan sama ada penyusunan secara abjad harus sensitif kes atau tidak sensitif kes.
Ketepatan Numerik: Untuk penyusunan numerik, pertimbangkan cara untuk mengendalikan nombor yang sangat besar atau nombor dengan banyak tempat perpuluhan untuk mengelakkan kehilangan ketepatan.
Peraturan Penyusunan Khusus: Benarkan fungsi perbandingan khusus untuk memenuhi keperluan penyusunan tertentu (contohnya, menyusun tarikh atau objek kompleks).
Prestasi untuk Pelbagai Pengagihan Input: Pertimbangkan bagaimana algoritma penyusunan berfungsi dengan input yang sudah disusun, disusun terbalik, atau yang diedarkan secara rawak.
Dengan menangani pertimbangan ini, Penyusun Senarai dapat menyediakan penyelesaian yang kukuh dan serba boleh untuk pelbagai keperluan penyusunan.