C选择排序:
#include <stdio.h>
#define N 10
main()
{
int i,j,min,tmp,a[N];
/*input data*/
printf("please input ten num:\n");
for(i=0;i<N;i++)
{ printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf("\n");
for(i=0;i<N;i++)
printf("%d;",a[i]);
printf("\n");
/*sort ten num*/
for(i=0;i<N-1;i++)
{ min = i;
for(j+1; j<N; j++)
if(a[min]>a[j])
min =j; //记下最小元素的下标。
/*********交换元素*********/
key = a[i];
a[i] = a[min];
a[min] = key;
}
/*output data*/
printf("After sorted \n");
for(i=0;i<N;i++)
printf("%d;",a[i]);
}
C冒泡排序:
#define n 10
void main()
{ int x[n],i;
printf("请输入%d个整数:",n);
for(i=0;i<n;i++)
scanf("%d",&x[i]);
int j, k, h, t;
for (h=n-1; h>0; h=k) /*循环到没有比较范围*/
{ for (j=0, k=0; j<h; j++) /*每次预置k=0,循环扫描后更新k*/
{ if (*(x+j) > *(x+j+1)) /*大的放在后面,小的放到前面*/
{ t = *(x+j);
*(x+j) = *(x+j+1);
*(x+j+1) = t; /*完成交换*/
k = j; /*保存最后下沉的位置。
这样k后面的都是排序排好了的。
*/
}
}
}
printf("\n排序后的顺序为:\n");
for(i=0;i<n;i++)
printf("%d ",x[i]);
}
C++选择排序:
#include<iostream>
using namespace std;
int main()
{ int num[10] = {9,8,10,3,4,6,4,7,2,1};
cout<<"排序前:"<<endl;
for (int m = 0;m < 10;m++)
{
cout<<num[m]<<" ";
}
for (int i = 0;i < 10;i++)
{ int pos = i;
for (int j = i;j < 10;j++)
{ if (num[pos] > num[j])
{
pos = j;
}
}
int tem;
tem = num[pos];
num[pos] = num[i];
num[i] = tem;
}
cout<<endl<<"排序后:"<<endl;
for (int m = 0;m < 10;m++)
{
cout<<num[m]<<" ";
}
return 0;
}
/*选择排序法的第一层循环从起始元素开始选到倒数第二个元素,主要是在每次进入的第二层循环之前,将外层循环的下标赋值给临时变量,接下来的第二层循环中,如果发现有比这个最小位置处的元素更小的元素,则将那个更小的元素的下标赋给临时变量,最后,在二层循环退出后,如果临时变量改变,则说明,有比当前外层循环位置更小的元素,需要将这两个元素交换.*/
C++冒泡排序:
#include <iostream>
#define LEN 10
using namespace std;
int main()
{
int nArray[LEN];
for(int i=0;i<LEN;i++)
nArray[i]=LEN-i;
cout<<"原始数据为:"<<endl;
for(int i=0;i<LEN;i++)
cout<<nArray[i]<<" ";
cout<<endl;
//开始冒泡
int temp;
for(int i=LEN-1;i>0;i--)
for(int j=0;j<i;j++)
{ if(nArray[j]>nArray[j+1])
{ temp=nArray[j];
nArray[j]=nArray[j+1];
nArray[j+1]=temp;
}
}
//结束冒泡
cout<<"排序结果:"<<endl;
for(int i=0;i<LEN;i++)cout<<nArray[i]<<" ";
return 0;
}。