3 回答
TA贡献1851条经验 获得超5个赞
#include<stdio.h>
//冒泡排序法
void BubbleSort(int * pData,int Count)
{
int iTemp;
for(int i=1;i<Count;i++)
{ //一共进行(count-1)轮,每次得到一个最小值
for(int j=Count-1;j>=i;j--)//每次从最后往前交换,得到最小值
{
if(pData[j]<pData[j-1])
{
iTemp = pData[j-1];
pData[j-1] = pData[j];
pData[j] = iTemp;
}
}
}
}
int main()
{
int *data;
int n,i;
printf("请输入要排序的数的个数:\n");
scanf("%d",&n);
data=new int[n];
printf("请输入%d个数:\n",n);
for (i=0;i<n;i++)
{
scanf("%d",&data[i]);
}
BubbleSort(data,n);
printf("排序结果为:\n");
for (i=0;i<n;i++)
{
printf("%d ",data[i]);
}
return 0;
}
TA贡献1848条经验 获得超6个赞
#include<stdio.h>
#define N 20
int compare(float x,float y)
{
if(x - y >1e-6)
return 1;
else if(y - x > 1e-6)
return -1;
else
return 0;
}
void swap(float x,swap y)
{
float z;
z = x;
x = y ;
y = z;
}
void sort(float a[],int n)
{
int i,j;
for(i = 0 ; i < n ; i ++)
for(j = i + 1; j < n ; j ++)
if(compare(a[i],a[j]) < 0)
swap(a[i],a[j]);
}
void main(void)
{
float array[N];
int n,i;
printf("请输入你的数组元素个数:(n<=N)\n");
scanf("%d",&n);
for(i = 0 ; i < n ; i ++)
scanf("%f",&array[i]);
printf("排序前数组为:\n");
for(i = 0 ; i < n ; i ++)
printf("%.2f ",array[i]);
sort(array,n);
printf("排序后数组为:\n");
for(i = 0 ; i < n ; i ++)
printf("%.2f ",array[i]);
}
TA贡献1906条经验 获得超3个赞
#include <iostream>
#include <cmath>
using namespace std;
const int NUM=5;
void quicksort(double str[],int front,int rear)
{
int lower=front+1,upper=rear;
swap(str[front],str[(front+rear)/2]);
double mid=str[front];
while(lower<=upper)
{
while(str[lower]<mid) lower++;
while(str[upper]>mid) upper--;
if(lower<upper)
swap(str[lower++],str[upper--]);
else lower++;//这是为了结束外层循环;
}
swap(str[front],str[upper]);
if(upper+1<rear) quicksort(str,upper+1,rear);
if(upper-1>front) quicksort(str,front,upper-1);
}
void qs(double str[],int n)
{
int i,max;
if(n<2) return;
for(i=1,max=0;i<NUM;i++)//换最大元素到数组末尾;
if(str[i]>str[max]) max=i;
swap(str[NUM-1],str[max]);
quicksort(str,0,NUM-2);
}
int main()
{
int i;
double str[NUM];
for(i=0;i<NUM;i++)
scanf("%lf",&str[i]);
qs(str,NUM);
for(i=0;i<NUM;i++) cout<<str[i]<<' '; cout<<endl;
return 0;
}
一般数据结构与算法教科书都有快速排序的代码:这个就是以前我不会调用STL时候自己写的,有什么问题可以给我留言 : 这个是升序排序的,想降序可以:
for(i=NUM-1;i>=0;i--) cout<<str[i]<<' '; cout<<endl;
- 3 回答
- 0 关注
- 147 浏览
添加回答
举报