/// /// 快速排序,如果你的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...