c 排序演算法

2021-10-01 21:03:49 字數 2751 閱讀 9580

/// /// 快速排序,如果你的key值取得是左邊的第乙個數,則先從右邊開始挖坑,如果取得是右邊的最後乙個數,則從左邊開始挖坑

///

///

///

///

void quick_sort(int s, int l, int r)

s[low] = x;

quick_sort(s, l, low - 1); // 遞迴呼叫

quick_sort(s, low + 1, r);}}

int partsort1(int arr, int left, int right)

swap(arr[begin], arr[right]);

return begin;

}/// /// 插入排序的思想就是,從右至左,比較乙個數和它左邊所有的數,如果遇到大於或者小於這個數的,就把他左邊的數往左移或者往右移,最後把該數插入到結尾的位置,實現交換

///

///

///

public void insertsort(int arry, int sortindex)

else

break;

}arry[j + 1] = temp;//把要插入的值插入到移動完空缺的那個位置上}}

foreach (var item in arry)

}/// /// 二分法排序,不是二分法查詢,思想是先跟據要排列的數的索引找到乙個中間值,把這個值和中間值比較,直到找到低位大於高位的時候,把從低位開始或者高位開始的值,依次往左或者往右移動,最後把要排列的數插入到空缺的位置

///

/// 插入排序是依次和它左邊的值作比較,這個是依次和左邊的中間值作比較,所以查詢的次數要小於插入排序

///

public void binarysort(int arry, int size)

else

}for (j = i - 1; j > high; j--)//這裡大於high或者大於等於low都是一樣的,因為他倆是相鄰的

arry[j + 1] = temp;

}foreach (var item in arry)

}/// /// 二分法查詢,必須是有序陣列,而且

///

///

///

///

public int binaryfind(int arry, int find)

else if (find < arry[mid])

else

}return -1;

}/// /// 亂序演算法,思想:從陣列裡面隨機取出乙個數,和陣列中的第乙個數字交換位置,然後再從除了第乙個數字之外隨機取乙個位置,和第二個數交換位置

///

///

public void disorder(int arry)

foreach (var item in arry)

}/// /// 從陣列裡面找到乙個最小的,和第一位交換位置,然後再從第二個數開始找到乙個最小的,放在第二個位置,這個和洗牌演算法差不多,只不過是洗牌是隨機從裡面找乙個數,和第一位交換位置

///

///

public void secletsort(int arry)

}swap(arry[i], arry[min]);

}debugitem(arry);

}public void debugitem(int arry)

}/// /// 交換兩個數

///

///

///

public void swap(int source, int des)

求陣列中第k大的值

利用快排演算法,第一次排序,得到乙個以key值為中間點,左右兩邊為小於和大於它的數,然後比較這個key值的索引和k的大小,因為第一次比較之後,key值所在的位置就是第key所在索引大的位置,因為陣列是從0開始的,第五大也就是索引為index+1,比如key的索引為3,那它是第3+1=4大的值,如果k>index+1,說明,在key值的右邊,則重新對右邊進行一次快速排序,得到乙個key值所在的索引,繼續比較,如果k temp)

8 arr[left] = arr[right];

9 while (left < right && arr[left] <= temp)

10 arr[right] = arr[left];

11 }

12 arr[left] = temp;

13 return left;

14 }

15 16 static int randselect(int arr, int left, int right, int k)

20 int index = randpartition(arr, left, right);

21 int m = index + 1;

22 if (m == k)

25 int result = -1;

26 if (m < k)

29 else if (m > k)

32 return result;

33 }

C 排序演算法

最基本的 氣泡排序 c code using system namespace bubblesorter j public class mainclass bubblesorter sh new bubblesorter sh.sort iarrary for intm 0 m iarrary.le...

C 排序演算法

protected int bubbleup int array 氣泡排序 return array public int selectionsorter int list 選擇排序 int temp list min list min list i list i temp return list ...

C 演算法排序

不廢話,上 using system using system.collections.generic using system.linq using system.text using system.threading.tasks namespace 排序演算法 陣列 氣泡排序 選則排序 arra...