c++编程数组排序的问题
用c++语言,如何将一下的数从小到大的排序?
char [10]={1,3,1,2,8,5,4,2,3};
补充:我知道可以用冒泡算法啊,但是不会写....
它的顺序太乱了
追问:为什么要定义个flag=1 的?
用c++语言,如何将一下的数从小到大的排序?
char [10]={1,3,1,2,8,5,4,2,3};
补充:我知道可以用冒泡算法啊,但是不会写....
它的顺序太乱了
追问:为什么要定义个flag=1 的?
答案:使用排序算法就可以
int flag;
char ch;
for(int i=0;i<10;i++)
{
flag=1;
for(int j=0;j<10-i-1; j++)
{
if(a[j]>a[j+1])
{
ch=a[j];
a[j]=a[j+1];
a[j+1]=ch;
flag=0;
}
}
if(!flag)
break;
}可以用冒泡排序嘛C++
冒泡排序,是指计算机的一种排序方法,它的时间复杂度为O(n^2),虽然不及堆排序、快速排序的O(nlogn,底数为2),但是有两个优点:1.“编程复杂度”很低,很容易写出代码;2.具有稳定性,这里的稳定性是指原序列中相同元素的相对顺序仍然保持到排序后的序列,而堆排序、快速排序均不具有稳定性。不过,一路、二路归并排序、不平衡二叉树排序的速度均比冒泡排序快,且具有稳定性,但速度不及堆排序、快速排序。冒泡排序是经过n-1趟子排序完成的,第i趟子排序从第1个数至第n-i个数,若第i个数比后一个数大(则升序,小则降序)则交换两数
#include <iostream> #define LEN 9 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; }
上一个:c++编程中出现的问题
下一个:c++编程 选择排序 高手来!