ソートc++
3160 ワード
部分転入http://www.cnblogs.com/zyb428/p/5673738.html
ソートの挿入:
一連の数字:6,4,5,2,3のソート手順は次のとおりです.
4,6,5,2,3//まず4を挿入する
4,5,6,2,3//5を挿入する
2,4,5,6,3//2を挿入する
2,3,4,5,6//3を挿入
泡のソート:
簡単すぎて説明しない
クイックソート:
時間どおり
ヒープのソート
int i;
int num[]={9,8,7,6,5,4,3,2,1,0};
HeapSort(num,sizeof(num)/sizeof(int));
for(i=0;i printf("%d ",num[i]);
}
printf("ok");
return 0;
}
ソートの挿入:
void InsertSort(int arr[], int len) {
int i, j;
int temp;
for (i = 1; i < len; i++) {
temp = arr[i];
for (j = i - 1; j >= 0 && arr[j] > temp;j--)
arr[j + 1] = arr[j];
arr[j + 1] = temp;
}
}
例を挙げます.一連の数字:6,4,5,2,3のソート手順は次のとおりです.
4,6,5,2,3//まず4を挿入する
4,5,6,2,3//5を挿入する
2,4,5,6,3//2を挿入する
2,3,4,5,6//3を挿入
泡のソート:
void BubbleSort(int arr[], int n)
{
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
簡単すぎて説明しない
クイックソート:
void Qsort(int a[], int low, int high)
{
if(low >= high)
{
return;
}
int first = low;
int last = high;
int key = a[first];/* */
while(first < last)
{
while(first < last && a[last] >= key) // , key , first
{
--last;
}
a[first] = a[last];/* */
while(first < last && a[first] <= key) // , key , last
{
++first;
}
a[last] = a[first];
/* */
} // (( key ),key,( key )),
a[first] = key;/* */
Qsort(a, low, first-1);
Qsort(a, first+1, high);
}
時間どおり
ヒープのソート
#include
//array ,i ,nlength
// : array
void HeapAdjust(int array[],int i,int nLength)
{
int nChild;
int nTemp;
for(;2*i+1array[nChild])++nChild;
// ,
if(array[i]=0;--i)
HeapAdjust(array,i,length);
// ,
for(i=length-1;i>0;--i)
{
// ,
//
array[i]=array[0]^array[i];
array[0]=array[0]^array[i];
array[i]=array[0]^array[i];
// heap ,
HeapAdjust(array,0,i);
}
}
int main(){ int i;
int num[]={9,8,7,6,5,4,3,2,1,0};
HeapSort(num,sizeof(num)/sizeof(int));
for(i=0;i printf("%d ",num[i]);
}
printf("ok");
return 0;
}