有插入排序,合并排序,冒泡排序,选择排序,希尔排序,堆排序,快速排序,计数排序,基数排序。在我的印象中快速排序是最好的,时间复杂度:n*log(n)
;
using namespace std;
int main()
{
int a[10];
cout<<"输入10个数字:"<
for (int i=0;i<10;i++)
{
cin>>a[i];
}
for(int m=0;m<10;m++)
for(int n=0;n<10;n++)
{
if(a[n]>a[n+1])
{
int s;
s=a[n];
a[n]=a[n+1];
a[n+1]=s;
}
}
for(int j=0;j<10;j++)
cout<return 0;
}
这个就OK了!
选择法是c中对数组进行排序的一种方法。
以整形数组元素为例,有数组A[10](以C语言为例描述),即A[0],A[1],…,A[8],A[9](假设其元素均互不相同)。要求对其元素排序使之递增有序。
首先以一个元素为基准,从一个方向开始扫描,比如从左至右扫描,以A[0]为基准。
接下来从A[0],…,A[9]中找出最小的元素,将其与A[0]交换。
然后将基准位置右移一位,重复上面的动作,比如,以A[1]为基准,找出A[1]~A[9]中最小的,将其与A[1]交换。
一直进行到基准位置移到数组最后一个元素时排序结束(此时基准左边所有元素均递增有序,而基准为最后一个元素,故完成排序)。
冒泡和快速排序的区别在于:冒泡算法,每次比较如果发现较小的元素在后面,就交换两个相邻的元素。将待排序的元素看作是竖着排列的"气泡",较小的元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个"气泡"序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即"轻"的元素在下面,就交换它们的位置。显然,处理一遍之后,"最轻"的元素就浮到了最高位置;处理二遍之后,"次轻"的元素就浮到了次高位置。在作第二遍处理时,由于最高位置上的元素已是"最轻"元素,所以不必检查。一般地,第i遍处理时,不必检查第i高位置以上的元素,因为经过前面i-1遍的处理,它们已正确地排好序。而选择排序算法的改进在于:先并不急于调换位置,先从A[1]开始逐个检查,看哪个数最小就记下该数所在的位置P,等一躺扫描完毕,再把A[P]和A[1]对调,这时A[1]到A[10]中最小的数据就换到了最前面的位置。
所以,选择排序每扫描一遍数组,只需要一次真正的交换,而冒泡可能需要很多次。比较的次数是一样的。
其实看你声明的变量的个数就知道了。选择的要比冒泡的多声明一个,用来存储最小(或最大的)元素的下标。而冒泡的比较后直接换。
好像七八种吧,常用的冒泡排序、选择排序,但效率不高,快速排序是常用的,记住快速排序就够用了,函数是qsort
首先排序是一种算法,不是属于哪种语言的,一般常说的有9中排序算法,不论什么语言,总是能实现的
===============================================================
插入排序
选择排序
合并排序
冒泡排序
希尔排序
递归排序
堆栈排序
快速排序
插入排序 二分排序 哈希排序 堆排序 快速排序 桶排序 统计排序等