வரிசைகளை வரிசைப்படுத்துவது என்பது ஜாவா தொடக்கக்காரர்கள் எப்படி செய்வது என்று தெரிந்து கொள்ள வேண்டிய பொதுவான செயல்பாடுகளில் ஒன்றாகும். வரிசைகள் எப்போதும் தரவை ஒழுங்கமைக்க மிகவும் வசதியான வழி அல்ல, இது பெரும்பாலும் சிறிய எண்களுக்குப் பொருந்தும் என்றாலும், வரிசை வரிசைப்படுத்துதலுக்குப் பின்னால் உள்ள கருத்து சிக்கலான மென்பொருள் மற்றும் தரவு அறிவியலில் டன் பயன்பாடுகளைக் கொண்டுள்ளது. இந்த இடுகையில், செருகும் வரிசை என்ன என்பதை நாம் கூர்ந்து கவனிப்போம். இந்தக் கருத்தை முழுமையாகப் புரிந்துகொள்ள உங்களுக்கு உதவ சில எடுத்துக்காட்டுகள் மற்றும் நடைமுறைச் சிக்கல்களைச் சேர்த்துள்ளோம்.
செருகும் வகையின் உள்ளீடு மற்றும் வெளியீட்டை இன்னும் விரிவாகப் பார்ப்போம்:
செருகும் வரிசை என்றால் என்ன?
அடிப்படையில், செருகும் வரிசை என்பது சிறிய எண்களின் சரங்களை ஒழுங்கமைக்க டெவலப்பர்கள் பயன்படுத்தும் அல்காரிதம் ஆகும். இது அனைத்து மதிப்புகளையும் இரண்டு அடுக்குகளாகப் பிரிக்கிறது - வரிசைப்படுத்தப்பட்ட ஒன்று மற்றும் வரிசைப்படுத்தப்படாத ஒன்று. ஒவ்வொன்றாக, "வரிசைப்படுத்தப்படாத" அடுக்கில் உள்ள எண்கள் எடுக்கப்பட்டு சரியான வரிசையில் வைக்கப்படுகின்றன.
- உள்ளீடு: வரிசையாக்கப்படாத எண் கூறுகளைக் கொண்ட வரிசை A: A[0,1, n, n-2...].
- வெளியீடு: ஒரே எண்களைக் கொண்ட ஆனால் முழுமையாக வரிசைப்படுத்தப்பட்ட வரிசை. இது பொதுவாக B: B[0]B[1]...B[n-1] என குறிப்பிடப்படுகிறது.
- எண் வரிசையாக்கம் (அதிகரிக்கும் வரிசை): [1, 2, 3, 4, 5]
- எண்ணியல் வரிசையாக்கம் (குறைக்கும் வரிசை): [5, 4, 3, 2, 1]
- அகரவரிசைப்படி வரிசைப்படுத்துதல்: [a, b, c, d]
செருகும் வரிசையின் கோட்பாட்டைப் புரிந்துகொள்வது
செருகும் வரிசைக்கு பின்னால் உள்ள குறியீட்டை ஆராயும் முன், தொழில்நுட்பமற்ற மொழியைப் பயன்படுத்தி அல்காரிதத்தை உடைப்போம். ஏறுவரிசையில் வரிசைப்படுத்துவதற்கான குறியீட்டை நாங்கள் காண்பிப்பதால், இந்த இடுகையில் படிமுறை படிமுறையை விளக்குவது அர்த்தமுள்ளதாக இருக்கிறது. படி 1. 10 க்கும் குறைவான எண் மதிப்பு இருக்கும் இடங்களுக்குarr[1]
இடையில் மீண்டும் மீண்டும் செய்வது . படி 2. முறையைப் பயன்படுத்தி வரிசையில் உள்ள முந்தைய எண்ணுடன் நீங்கள் தேர்ந்தெடுத்த உறுப்பை (என அறியப்படுகிறது) ஒப்பிடவும் . படி 3. அனைத்து உறுப்புகளும் அவற்றின் வாரிசுகளை விட சிறியதாக இருந்தால், பெரிய மதிப்பைக் கண்டறியும் வரை ஒப்பீட்டை மீண்டும் செய்யவும். படி 4. வரிசைப்படுத்தப்பட்ட வரிசையை உருவாக்க, சிறியதைத் தாண்டி ஒரு பெரிய மதிப்பை ஒரு நிலையை மாற்றவும். arr[n]
n
key
sort()
படி 5. வரிசைப்படுத்தப்பட்ட எழுத்துக்கள் கிடைக்கும் வரை செயல்முறையை மீண்டும் செய்யவும்
பழமையான அணிவரிசைகளை வரிசைப்படுத்துதல்
அல்காரிதம் மிகவும் நேரடியான ஜாவா செயல்பாடுகளில் ஒன்றாக இருப்பதால், முழுமையான ஆரம்பநிலையாளர்கள் கூட அதை செயல்படுத்துவதில் அதிக சிரமம் இருக்கக்கூடாது. வரிசையை வரிசைப்படுத்துவதற்கான படிப்படியான வழிகாட்டி இங்கே1. வரிசைப்படுத்த ஒரு வரிசையை அறிவிக்கவும்
தொடங்குவதற்கு, ஜாவாவைப் பயன்படுத்தி பின்னர் காண்பிக்கும் மதிப்புகளின் சரத்தை உருவாக்குவோம். செருகும் வரிசையைப் பயன்படுத்த, நீங்கள் ஒரு வரிசையை உருவாக்க வேண்டும். அதற்கு, பயன்படுத்தவும்int[]
int[] arrayA = {10, 14, 20, 30};
2. அல்காரிதத்தை செயல்படுத்த sort_arr ஐப் பயன்படுத்தவும்
செருகும் வரிசையை செயல்படுத்துவதற்கான பொதுவான வழிகளில் sort_arr முறையும் ஒன்றாகும். நடைமுறையில், இது போல் தெரிகிறது:
for(int i=0; i< sort_arr.length; ++i){
int j = i;
3. ஒரு லூப் மற்றும் ஒரு இட்ரேட்டரை உருவாக்கவும்
செருகும் வரிசை அல்காரிதத்தில் லூப்பைப் பயன்படுத்துவதன் மூலம், டெவலப்பர்கள் ஒவ்வொரு உறுப்புக்கும் தர்க்கத்தை மீண்டும் செய்ய வேண்டியதில்லை. சுழல்களை உருவாக்குவது சிக்கலானதாகத் தோன்றினாலும், இது மிகவும் எளிமையானது - இங்கே ஒரு எடுத்துக்காட்டு:
for(int i=0; i< sort_arr.length; ++i){
இப்போது உங்களிடம் செயல்படும் லூப் உள்ளது, தேவையான வரிசையில் அனைத்து உறுப்புகளையும் வரிசைப்படுத்தும் ஒரு மறு செய்கையை உருவாக்க வேண்டிய நேரம் இது. இனிமேல், "" என்று திரும்பத் திரும்பக் குறிப்பிடுவோம் j
.
int j = i;
4. "while loop" ஐ உருவாக்குதல்
செருகும் வரிசைக்கு வரும்போது, புதிய, வரிசைப்படுத்தப்பட்ட வரிசைக்கு "while" லூப் அவசியம். ஏறுவரிசை செருகும் வரிசைக்கு அதை அமைக்க, டெவலப்பர் இரண்டு நிபந்தனைகளுக்கு இணங்க வேண்டும்:- j க்கு ஒதுக்கப்பட்ட மதிப்பு 0 ஐ விட அதிகமாக இருக்க வேண்டும்
- ஒதுக்கப்பட்ட மதிப்பு குறியீட்டை
j-1
விட அதிகமாக இருக்க வேண்டும்j
j
.
5. வரிசையை வரிசைப்படுத்துதல்
நீங்கள் while லூப்பை அமைத்த பிறகு, while லூப்பில் உள்ள ஒன்று அல்லது இரண்டு நிபந்தனைகளும் தோல்வியடையும் வரைj
மற்றும் j-1
மதிப்புகள் மாற்றப்படும். இதேபோல், for-லூப் நிபந்தனைகளும் தோல்வியடையும் வரை for loop இல் உள்ள ஒவ்வொரு மதிப்புக்கும் வரிசையாக்கம் மீண்டும் மீண்டும் செய்யப்படும். நடைமுறையில் செருகும் வரிசைமுறை எவ்வாறு செயல்படுகிறது என்பது இங்கே:
int key = sort_arr[j];
sort_arr[j] = sort_arr[j-1];
sort_arr[j-1] = key;
j = j-1;
வரிசைப்பட்டியலை வரிசைப்படுத்துதல்
செருகும் வரிசையின் பின்னால் உள்ள கணிதத்தைப் புரிந்துகொள்வது முக்கியம் என்றாலும், நிஜ வாழ்க்கை மென்பொருள் மேம்பாட்டிற்கு வரும்போது, நீங்கள் பழமையான வரிசைகளில் உள்ள வரிசைகளை விட வரிசைப்பட்டியலை வரிசைப்படுத்துவீர்கள். வரிசைப்பட்டியலை வரிசைப்படுத்துவதற்கான படிப்படியான வழிகாட்டி இங்கே:Element
சேகரிப்பில் உள்ள பொருட்களுக்கு புதிய வகுப்பை உருவாக்கவும் .public class Element { private int id; public Element(int id) { this.id = id; }
- ஒரு சேகரிப்பில், ஒரு முறை உள்ளது
compareTo()
- இரண்டு உறுப்புகளின் ஐடிகளை ஒப்பிடுவதற்கு இதைப் பயன்படுத்துவோம்.public int compareTo(Element element) { int res = 0; if (this.id < element.getId()) { res = -1; } if (this.id > element.getId()) { res = 1; } return res; } }
- அல்காரிதத்தைப் பயன்படுத்துங்கள் மற்றும் பொருட்களை
ArrayList
ஒப்பிடுவதற்குப் பதிலாக அவற்றை வரிசைப்படுத்த சில சுழல்களை உருவாக்கவும்.public static void insertionSortArrayList(List<element> list) { for (int j = 1; j < list.size(); j++) { Element current = list.get(j); int i = j-1; while ((i > -1) && ((list.get(i).compareTo(current)) == 1)) { list.set(i+1, list.get(i)); i--; } list.set(i+1, current); } }
ArrayList
கீழே காட்டப்பட்டுள்ளபடி, நீங்கள் மேலும் கூறுகளைச் சேர்க்கலாம் :List<element> list = new ArrayList<>(); // Create elements w/ IDs 0-24 for (int i = 0; i < 25; i++) { list.add(new Element(i)); } // To use insertion sort, shuffle the values Collections.shuffle(list);
- இப்போது வரிசைப்படுத்துவதற்கான நேரம் இது:
// This helps print values before sorting list.forEach(e -> System.out.print(e.getId() + ", ")); // Sort the list insertionSortArrayList(list); System.out.println(); // Display a sorted array list.forEach(e -> System.out.print(e.getId() + ", "));
- இப்போது நாம் எந்த தவறும் செய்யவில்லை என்பதை உறுதிப்படுத்த உள்ளீடு மற்றும் வெளியீட்டை ஒப்பிடுவோம். நாம் உதாரணமாகப் பயன்படுத்திய சரத்தின் ஒப்பீடு இங்கே உள்ளது.
4, 2, 6, 7, 0, 5, 9, 1, 8, 3, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
GO TO FULL VERSION