English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
هذا المقال يشرح طريقة ترتيب مصفوفة وفقًا للمعيار المحدد في لغة Golang. يُشارك الجميع للاستفادة، ويتمثل كما يلي:
اعطني مصفوفة ثنائية، يرجى ترتيب هذه المصفوفة الثنائية وفقًا للسطر i (يبدأ i من 1)، إذا كانت العناصر في السطر i متطابقة، فترتب نفس الصفوف وفقًا للعنصر i+1، وهكذا.
إذا كانت العناصر في السطر i+1 متطابقة، فاستمر في مقارنة السطر i+2، وهكذا، حتى السطر الأخير. إذا كانت العناصر من السطر i إلى السطر الأخير متطابقة، فإنها تترتيب وفقًا للترتيب الأصلي.
إدخال نموذجي:
1,2,3
2,3,4
2,3,1
1,3,1
ترتيب حسب السطر الثاني، الناتج هو:
1,2,3
2,3,1
1,3,1
2,3,4
كود التنفيذ:
package huawei import ( "fmt" "sort" ) func Test09Base() { nums := [][]int{{1, 2, 3}, {2, 3, 4}, {2, 3, 1}, {1, 3, 1}} firstIndex := 2 //按第二列排序 result := arraySort(nums, firstIndex-1) fmt.Println(result) } //按指定规则对nums进行排序(注:此firstIndex从0开始) func arraySort(nums [][]int, firstIndex int) [][]int { //检查 if len(nums) <= 1 { return nums } if firstIndex < 0 || firstIndex > len(nums[0])-1 { fmt.Println("Warning: Param firstIndex should between 0 and len(nums)-1. The original array is returned.") return nums } //排序 mIntArray := &IntArray{nums, firstIndex} sort.Sort(mIntArray) return mIntArray.mArr } type IntArray struct { mArr [][][]int firstIndex int } //IntArray implement sort.Interface interface func (arr *IntArray) Len() int { بازگشت len(arr.mArr) } func (arr *IntArray) Swap(i, j int) { arr.mArr[i], arr.mArr[j] = arr.mArr[j], arr.mArr[i] } func (arr *IntArray) Less(i, j int) bool { arr1 := arr.mArr[i] arr2 := arr.mArr[j] براي index := arr.firstIndex; index < len(arr1); index++ { اگر arr1[index] < arr2[index] { بازگشت حقيقي در صورت ديگر، اگر arr1[index] > arr2[index] { بازگشت كاذب } } بازگشت i < j }
اميدوارم محتواي اين مقاله به شما در طراحي برنامههاي گو را كمك كند.
بيان: محتواي اين مقاله از وب سرورهايي در اختيار عموم است، كه توسط كاربران وب خودكفايي فراهم شده و به صورت خودجوش بارگذاري شده است، وب سايت ما مالكيت كامل را ندارد، و هيچگونه ويرايش دستي انجام نميدهد و مسئوليت قانوني مرتبط با آن را ندارد. اگر محتوايي كه شامل حقوق ملكي است را شناسايي كرديد، خوش آمدید به آدرس: notice#oldtoolbag.com (براي ارسال ايميل، لطفاً # را به @ تبديل كنيد) براي گزارش كردن و ارائه شواهد، و اگر واقعاً مشخص شد، وب سايت ما محتواي مشكوك در حقوق ملكي را فوراً حذف خواهد كرد.