歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 排序算法總結

排序算法總結

日期:2017/3/1 9:37:11   编辑:Linux編程

1 冒泡排序:

void BubbleeSort(int*p,int len,SORT_TYPE type = SORT_ASC)
{

//冒泡方式二:當某一次遍歷沒有發生任務數據交互時,說明已經排序好了
bool flag = true;
int k = len;
while (flag)
{
flag = false;
for(int j=0 ; j<k-1 ; j++)
{
if (p[j] > p[j+1])
{
swap(p+j,p+j+1);
flag = true;
}
}
}

2、快速排序:

void QuickSort(int*a, int nLeft, int nRight)
{
if(nLeft > nRight) return;

int temp = a[nLeft];
int i = nLeft;
int j = nRight;

while (i < j)
{
//首先從右邊找到一個比temp小的數
while(a[j]>=temp && j>i)
j--;
//從左邊邊找到一個比temp大的數
while(a[i]<=temp && j>i)
i++;
//交換找到的兩個數據
//交換兩個數在數組中的位置
swap(a+i,a+j);
}
//print(a,10);
//最終將基准數歸位
swap(a+nLeft,a+i);
QuickSort(a,nLeft,i-1);
QuickSort(a,i+1,nRight);
}

3、插入排序

void InsertSort(int*a, int nLeft, int nRight) {
for(int i=1 ; i< len ; i++)
{
if(a[i] < a[i-1])
{
int j = i-1;
int temp = a[i];

while(temp < a[j])
{
a[j+1] = a[j];
j--;
}
a[j+1] = temp;
}
//print(a,len);
}
}

4、選擇排序

void SelectSort(int*a,int len,SORT_TYPE type = SORT_ASC)
{
for(int i=0; i<len;i++)
{
int temp = a[i];
int index = i;
for(int j=i+1; j <len;j++)
{
if(a[j] < a[index])
{
index = j;
}
}
swap(a+i,a+index);
}
//print(a,len);
}

Copyright © Linux教程網 All Rights Reserved