冒泡排序法(沉底排序,相邻比较)
#include<stdio.h>
int main()
{
int a[8]={12,3,8,19,2,1,98,34};
for(int i=0;i<8;i++){
for(int k=8-i;k>0;k--){
if(a[k]<a[k-1]){
int t=a[k-1];
a[k-1]=a[k];
a[k]=t;
}
}
}
for(int i=0;i<8;i++){
printf("%d ",a[i]);
}
return 0;
}
void my_sort(int a[], const int n)
{
int i, j;
for (i=0; i<n; i++)
{
for (j=1; j<n-i; j++)
{
if (a[j-1] > a[j])
{
int temp;
temp=a[j-1],a[j-1]=a[j],a[j]=temp;
}
}
}
}
选择排序法(交换位置)
#include<stdio.h>
int main()
{
int a[8]={12,38,27,3,8,28,5,6};
for(int i=0;i<8;i++){
int k=i;
int min=a[i];
for(int j=i;j<8;j++){
if(a[j]<min){
min=a[j];
k=j;
}
}
a[k]=a[i];
a[i]=min;
}
for(int i=0;i<sizeof(a)/sizeof(int);i++){
printf("%d ",a[i]);
}
return 0;
}
void my_sort(int a[], const int n)
{
int i, j;
for (i=0; i<n; i++)
{
int minid = i, minval = a[i];
for (j=i; j<n; j++)
{
if (a[j] < minval)
{
minval = a[j];
minid = j;
}
}
a[minid] = a[i];
a[i] = minval;
}
}
插入排序
#include<stdio.h>
void my_sort(int a[], const int n)
{
int i, j;
for (i=1; i<n; i++)
{
int k = a[i];
for (j=i-1; j>=0; j--)
{
if (k >= a[j]) break;
a[j+1] = a[j];
}
a[j+1] = k;
}
}
快速排序(c++sort)
法一:(默认从小到大)
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int a[] = {5, 3, 1, 4, 2};
int i;
sort(a, a+5);
for (i=0; i<5; i++)
cout<<a[i]<<" ";
return 0;
}
法二:(compare从大到小)
#include <iostream>
#include <algorithm>
using namespace std;
int compare(int a,int b){
return a>b;
}
int main()
{
int a[] = {5, 3, 1, 4, 2};
int i;
sort(a, a+5,compare);
for (i=0; i<5; i++)
cout<<a[i]<<" ";
return 0;
}
法三:(less/greater)
less<数据类型>()//从小到大排序 greater<数据类型>()//从大到小排序
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int a[] = {5, 3, 1, 4, 2};
int i;
sort(a, a+5,greater<int>());
for (i=0; i<5; i++)
cout<<a[i]<<" ";
return 0;
}
|