Linux C++ 直接选择排序,冒泡排序,快速排序
选择排序的思想是:每次从待排序中选择最小(大)的元素插入已经排好的序列中。
/*直接选择排序*/
#include <iostream>
using namespace std;
void swapp(int &a,int &b)
{
int temp = a;
a = b;
b = temp;
}
int main()
{
int a[]={5,4,10,20,12,3,2,1,3,5,6,56,43,32};
int size = sizeof(a)/sizeof(int); //计算数组元素个数
for(int i=0;i<size-1;i++)
{
int last = i;
for(int j=i+1;j<size;j++) //选择后面最小元素
{
if(a[j] < a[last])
{
last = j;
}
}
swapp(a[i],a[last]);//交换
}
//输出
for(int i=0;i<size;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
运行结果:
1 2 3 3 4 5 5 6 10 12 20 32 43 56
冒泡排序思想:比较相邻连个元素大小,选择最大(小)的排序
/*冒泡排序(for循环)*/
#include <iostream>
using namespace std;
void swapp(int &a,int &b)
{
int temp = a;
a = b;
b = temp;
}
int main()
{
int a[]={1,2,5,4,10,20,12,3,3,5,6,56,43,32};
int size = sizeof(a)/sizeof(int);//计算数组元素个数
//for循环
for(int i=0;i<size-1;i++) //遍历各个元素
{
for(int j=0; j<size-i; j++) //找出了最大(小)的一个
{
if(a[j+1] < a[j])
swapp(a[j],a[j+1]); //交换最大(小)的一个
}
}
//输出
for(int i=0; i<size; i++)
{
cout<<a[i]<<" ";
}
return 0;
}
运行结果:
1 2 3 3 4 5 5 6 10 12 20 32 43 56
/*冒泡排序(while循环)*/
#include <iostream>
using namespace std;
void swapp(int &a,int &b)
{
int temp = a;
a = b;
b = temp;
}
int main()
{
int a[]={1,2,5,4,10,20,12,3,3,5,6,56,43,32};
int size = sizeof(a)/sizeof(int);//计算数组元素个数
//while循环
int loop = size-1;//最大循环次数
while(loop>0) //
{
int lastExchangeIndex = 0; //标记本次交换最后一对元素的最小小标
for(int i=0; i<loop; i++)
{
if(a[i+1] < a[i])
{
swapp(a[i],a[i+1]);
lastExchangeIndex = i;
}
}
loop = lastExchangeIndex; //标记本次交换最后一对元素的最小小标
}
//输出
for(int i=0; i<size; i++)
{
cout<<a[i]<<" ";
}
return 0;
}
运行结果:
1 2 3 3 4 5 5 6 10 12 20 32 43 56
/*快速排序*/
#include <iostream> using namespace std; void swapp(int &a,int &b) { int temp = a; a = b; b = temp; } int SortSwap(int a[], int left, int right) { int &pos = a[right]; while(left < right) { while(left <right && a[left] <= pos) { ++left; } while(left < right && a[right] >= pos) { --right; } swapp(a[left],a[right]); } swapp(a[left],pos); return left; } void QuickSort(int a[],int left,int right) { if(left >= right) { return; } int pos = SortSwap(a,left,right); QuickSort(a,left,pos - 1); QuickSort(a,pos + 1,right); } int main() { int a[]={1,2,5,4,10,20,12,3,3,5,6,56,43,32}; int size = sizeof(a)/sizeof(int); QuickSort(a,0,size-1); for(int i=0; i<size; i++) { cout<<a[i]<<" "; } return 0; }
运行结果:
1 2 3 3 4 5 5 6 10 12 20 32 43 56
我已经与基督同钉十字架。现在活着的,不再是我,乃是基督在我里面活着。
并且我如今在肉身活着,是因信神的儿子而活,他是爱我,为我舍己。
我不废掉神的恩。义若是借着律法得的,基督就是徒然死了。

浙公网安备 33010602011771号