• 对n个数据进行从小到大排序
千次阅读
2015-03-29 12:51:47
#include <iostream>
using namespace std;

template <class T>
void sort(T* a, int n)
{
int t;
T temp;
for (int i=0; i<n-1; i++)
{
t=i;
for (int j=i+1; j<n; j++)
{
if (*(a+t)>*(a+j))
t=j;
}
temp=*(a+i);
*(a+i)=*(a+t);
*(a+t)=temp;
}
}

static float arr0[6]={2.0,65.0,9.0,78.0,88.0,-2.0};
static double arr1[6]={558.0,999.0,123.0,222.0,55.0,456.0};
static int arr2[6]={123,456,789,654,321,5};

void main()
{
cout<<"float exp."<<endl;
for (int i=0; i<6; i++)
{
cout<<arr0[i]<<" ";
}
cout<<endl;
sort(arr0, 6);
for (i=0; i<6; i++)
{
cout<<arr0[i]<<" ";
}
cout<<endl;

cout<<"double exp."<<endl;
for (i=0; i<6; i++)
{
cout<<arr1[i]<<" ";
}
cout<<endl;
sort(arr1, 6);
for (i=0; i<6; i++)
{
cout<<arr1[i]<<" ";
}
cout<<endl;

cout<<"int exp."<<endl;
for (i=0; i<6; i++)
{
cout<<arr2[i]<<" ";
}
cout<<endl;
sort(arr2, 6);
for (i=0; i<6; i++)
{
cout<<arr2[i]<<" ";
}
cout<<endl;
}
更多相关内容
• 这里用了快速排序法。 #include <iostream> using namespace std; void swap(int* a, int* b); void sort1(int* array, int n); void sort2(int* array, int left, int right); void swap(float* a, float*...

1.用重载函数实现。

这里用了快速排序法。

#include <iostream>
using namespace std;

void swap(int* a, int* b);
void sort1(int* array, int n);
void sort2(int* array, int left, int right);
void swap(float* a, float* b);
void swap(double* a, double* b);
void sort1(float* array, int n);
void sort1(double* array, int n);
void sort2(float* array, int left, int right);
void sort2(double* array, int left, int right);

int main(void) {
int  n;
cin >> n;
cout << "输入n个数：n=" << n << endl;
//  1代表整数， 2代表单精度浮点型float   , 3代表双精度浮点型double
int co;
cout << "类型为co=" ;
cin >> co;
if (co == 1) {
cout << ",整数" << endl;
int x;
int* num = new int[n];
for (int i = 0; i < n; i++) {
cin >> x;
num[i] = x;
}
sort1(num, n);
for (int i = 0; i < n; i++) {
cout << num[i] << "  ";
}
delete[] num;
}

if (co == 2) {
cout << ",单精度浮点型" << endl;
float x;
float* num = new float[n];
for (int i = 0; i < n; i++) {
cin >> x;
num[i] = x;
}
sort1(num, n);
for (int i = 0; i < n; i++) {
cout << num[i] << "  ";
}
delete[] num;
}

if (co == 3) {
cout << ",双精度浮点型" << endl;
double x;
double* num = new double[n];
for (int i = 0; i < n; i++) {
cin >> x;
num[i] = x;
}
sort1(num, n);
for (int i = 0; i < n; i++) {
cout << num[i] << "  ";
}
delete[] num;
}

return 0;

}

void swap(int* a, int* b) {
int temp;
temp = *b;
*b = *a;
*a = temp;
}

void swap(float* a, float* b) {
float temp;
temp = *b;
*b = *a;
*a = temp;
}

void swap(double* a, double* b) {
double temp;
temp = *b;
*b = *a;
*a = temp;
}

void sort1(int* array, int n) {
sort2(array, 0, n - 1);
}

void sort1(float* array, int n) {
sort2(array, 0, n - 1);
}

void sort1(double* array, int n) {
sort2(array, 0, n - 1);
}
void sort2(int* array, int left, int right) {
int left_index = left;
int right_index = right;
int pivot = array[(left + right) / 2];

while (left_index <= right_index) {
for (; array[left_index] < pivot; left_index++);
for (; array[right_index] > pivot; right_index--);
if (left_index <= right_index) {
swap(&array[left_index], &array[right_index]);
left_index++;
right_index--;
}
}

if (right_index > left) {
sort2(array, left, right_index);
}
if (left_index < right) {
sort2(array, left_index, right);
}
}

void sort2(float* array, int left, int right) {
int left_index = left;
int right_index = right;
float pivot = array[(left + right) / 2];

while (left_index <= right_index) {
for (; array[left_index] < pivot; left_index++);
for (; array[right_index] > pivot; right_index--);
if (left_index <= right_index) {
swap(&array[left_index], &array[right_index]);
left_index++;
right_index--;
}
}

if (right_index > left) {
sort2(array, left, right_index);
}
if (left_index < right) {
sort2(array, left_index, right);
}
}

void sort2(double* array, int left, int right) {
int left_index = left;
int right_index = right;
double pivot = array[(left + right) / 2];

while (left_index <= right_index) {
for (; array[left_index] < pivot; left_index++);
for (; array[right_index] > pivot; right_index--);
if (left_index <= right_index) {
swap(&array[left_index], &array[right_index]);
left_index++;
right_index--;
}
}

if (right_index > left) {
sort2(array, left, right_index);
}
if (left_index < right) {
sort2(array, left_index, right);
}
}

2.用函数模版

#include <iostream>
using namespace std;

template <class T>
void swap(T* a, T* b) {
T temp;
temp = *b;
*b = *a;
*a = temp;
}
template <class T>
void sort2(T* array, int left, int right) {
int left_index = left;
int right_index = right;
T pivot = array[(left + right) / 2];

while (left_index <= right_index) {
for (; array[left_index] < pivot; left_index++);
for (; array[right_index] > pivot; right_index--);
if (left_index <= right_index) {
swap(&array[left_index], &array[right_index]);
left_index++;
right_index--;
}
}

if (right_index > left) {
sort2(array, left, right_index);
}
if (left_index < right) {
sort2(array, left_index, right);
}
}
template <class T>
void sort1(T* array, int n) {
sort2(array, 0, n - 1);
}

int main(void) {
int  n;
cin >> n;
cout << "输入n个数：n=" << n << endl;
//  1代表整数， 2代表单精度浮点型float   , 3代表双精度浮点型double
int co;
cout << "类型为co=";
cin >> co;

if (co == 1) {
cout << ",整数" << endl;
int x;
int* num = new int[n];
for (int i = 0; i < n; i++) {
cin >> x;
num[i] = x;
}
sort1(num, n);
for (int i = 0; i < n; i++) {
cout << num[i] << "  ";
}
delete[] num;
}

if (co == 2) {
cout << ",单精度浮点型" << endl;
float x;
float* num = new float[n];
for (int i = 0; i < n; i++) {
cin >> x;
num[i] = x;
}
sort1(num, n);
for (int i = 0; i < n; i++) {
cout << num[i] << "  ";
}
delete[] num;
}

if (co == 3) {
cout << ",双精度浮点型" << endl;
double x;
double* num = new double[n];
for (int i = 0; i < n; i++) {
cin >> x;
num[i] = x;
}
sort1(num, n);
for (int i = 0; i < n; i++) {
cout << num[i] << "  ";
}
delete[] num;
}

return 0;
}


默默无闻的菜鸟小白。。。

展开全文
• C++_对n个数据进行从小到大排序 #include<iostream> using namespace std; /** * 对n个数据进行从小到大排序 * @project C++_Demo * @author CaoPengCheng * @date 2021-09-09 * @version 1.0.0 */ ...

C++_对n个数据进行从小到大的排序

#include<iostream>
using namespace std;
/**
* 对n个数据进行从小到大的排序
* @project C++_Demo
* @author CaoPengCheng
* @date 2021-09-09
* @version 1.0.0
*/
class Number{
private:
int n;
int a[100];
public:
Number(){
}
Number(int N){
n=N;
}
void sort(){
for(int i=0;i<n-1;i++)
for(int j=0;j<n-i-1;j++)
if(a[j]>a[j+1]) {
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
void input(){
cout<<"intput a[]:";
for(int i=0;i<n;i++){
cin>>a[i];
}
}
void printf(){
cout<<"a[]=";
for(int i=0;i<n;i++)
cout<<a[i]<<" ";
}
void setN(int N){
n=N;
}
int getN(){
return n;
}
};
int main(){
Number number;
int n;
cout<<"input N:";
cin>>n;
number.setN(n);
cout<<"N is:"<<number.getN()<<endl;
number.input();
number.printf();
cout<<endl<<"sort ";
number.sort();
number.printf();
cout<<endl;
return 0;
}


展开全文
• 源程序代码： #include <iostream> using namespace std;...int sort(int* p, int n) { for (int i = 0; i < n; i++) { for (int j = i; j < n; j++) { if (p[i] > p[j]) { int x; ..

源程序代码：
#include <iostream>
using namespace std;
int sort(int* p, int n)
{
for (int i = 0; i < n; i++)
{
for (int j = i; j < n; j++)
{
if (p[i] > p[j])
{
int x;
x = p[j];
p[j] = p[i];
p[i] = x;
}
}
}
for (int k = 0; k < n; k++)
cout << p[k] << " ";
return 0;
}
float sort(float* p, int n)
{
for (int i = 0; i < n; i++)
{
for (int j = i; j < n; j++)
{
if (p[i] > p[j])
{
float x;
x = p[j];
p[j] = p[i];
p[i] = x;
}
}
}
for (int k = 0; k < n; k++)
cout << p[k] << " ";
return 0;
}
double sort(double* p, int n)
{
for (int i = 0; i < n; i++)
{
for (int j = i; j < n; j++)
{
if (p[i] > p[j])
{
double x;
x = p[j];
p[j] = p[i];
p[i] = x;
}
}
}
for (int k = 0; k < n; k++)
cout << p[k] << " ";
return 0;
}
int main()
{
int a, n;
cout << "您需要比较什么类型的数：\n1.整型\n2.单精度\n3.双精度" << endl << "输入类型前的编号：" << endl;
cin >> a;
cout << "请输入您需要比较数据的个数：" << endl;
cin >> n;
cout << "请输入" << n << "个需要比较的数\n";
if (a == 1)
{
int* p = new int[n];
for (int i = 0; i < n; i++)
cin >> p[i];
sort(p, n);
}
if (a == 2)
{
double* p = new double[n];
for (int i = 0; i < n; i++)
cin >> p[i];
sort(p, n);
}
if (a == 3)
{
float* p = new float[n];
for (int i = 0; i < n; i++)
cin >> p[i];
sort(p, n);
}
return 0;
}


运行结果截图：

展开全文
• 用函数重载实现： #include <iostream> using namespace std;...int sort(int* p, int n) { for (int i = 0; i < n; i++) { for (int j = i; j < n; j++) { if (p[i] > p[j]) { int x;
• #include using namespace std;...void sort(T* a, int n) {  int t;  T temp;   for (int i=0; i  {   t=i;  for (int j=i+1; j  {   if (*(a+t)>*(a+j))  t=j;   }   temp=*(a+
• #include  #include using namespace std; int main() { int pl(int *q,int n); double pl(double *p,int n); float pl(float *p,int n);...cout请输入您需要比较数据的个数：" cin>>n; cout请输入
• 快速排序法：通过一趟排序将要排序数据分割成独立的两部分，其中一部分的所有数据都比另一部分的所有数据要小，然后再按此方法这两部分数据分别进行快速排序（此过程可以用到函数递归的方法）。 #include #...
• //用冒泡排序法将输入的n个进行从小到大排列 /* 我们写一函数，引用函数解决问题；这函数最重要的思想如下：1：每次将相邻的两数对比，将小的调到前面 m=a[j]; a[j]=a[j-1]; a[j-1]=m; 就是这一...
• 编写程序，使用插入排序法将n个从小到大进行排序。（用指针实现） main函数 测试 测试输入 1 2 7 6 8 5 4 2 0 输出 1 2 2 4 5 6 7 8
• 用冒泡排序对N个数从小到大排序

万次阅读 多人点赞 2018-11-02 15:11:48
#include &lt;stdio.h&...#define N 5 int main() { int a[N],i,j,t; for(i=0;i&lt;N;i++) scanf("%d",&amp;a[i]); for(i=1;i&lt;=N-1;i++) for(j=0;j&lt;N-i;j++...
• /*用选择法数组中的n个元素按从小到大的顺序进行排序*/ #include <stdio.h> #define N 20 void fun(int a[], int n) { int i, j, t, p; for (j = 0; j < n - 1; j++) { p = j; for (i = j; i <...
• #include <iostream>...void sort(int a[],int n) { int temp; for(int i=0;i<n;i++) for(int j=i+1;j<n;j++) { if(a[i]>a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } } } void ...
• 将数组a中的m元素从小到大排序； （3）定义函数void output(int a[],int m); 依次输出数组a中的m元素； （4）在主函数中输入一整数，并输入范围进行合法化的判断，输入的数据进行处理，输出处理结果。
• 【程序设计】--------------------------------------------------功能：编写函数用冒泡排序法对数组中的数据进行从小到大排序。*********Begin**********和**********End*********...【程序设计】---------------...
• 展开全部用选择法10整数排序，用scanf输入。你用下62616964757a686964616fe78988e69d8331333366303235面这种输入方法就可以了。# includeint main(){int i,j,min,temp,a[10];printf("enter data:\n");for (i=0;i...
• N个数从小到大排序

千次阅读 2019-12-16 19:49:24
输入一正整数NN个整数，将它们按从小到大的顺序进行排序后输出。 输入 输入一正整数N（1≤N≤100）和N个整数，用空格分隔。 输出 将这N个数按从小到大的顺序重新输出 样例输入 10 -4 5 12 88 23 -9 2 0 8 10 5...
• 含有N整数的数组，使用堆排序让其由小到大输出 样例输入 6 43 2 56 1 22 9 样例输出 1 2 9 22 43 56 堆排序 含有N整数的数组，使用堆排序让其由小到大输出 样例输入 6 43 2 56 1 22 9 样例输出 1 2 9 ...
• 整体排序的思路： 1.找到输入数组中的最小元素 2.把找到的最小元素赋给另一空数组 3.删除刚找到的最小元素...//int类型数据排序 void sort(int n,int a[100],int b[100]) { int i,j,k; int m=n; cout<<...
• 课程的随堂作业，C语言的，用dev就能运行，萌新代码，勿喷，仅仅帮助不想写作业的朋友方便一下，反正老师也不会仔细检查的
• #include <stdio.h> #define N 5 void main() { int a[N]; int i,j,temp;... printf("请输入待排序数据: \n"); for (i=0;i<N;i++) scanf("%d",&a[i]); for (i=1;i&l...
• 要求：如输入141812151015926输出的每次的排序结果是i=1：118121510145926i=2：121215101459186i=3：125151014129186i=4：125610141291815i=5：125691412101815i=6：125691012141815i...要求：如输入14 18 12 15 10 ...
• 利用冒泡算法10数字进行从小到大排序 #include <stdio.h> int main() { int a[10]; int i,j,t; printf("请输入10数字:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); printf("\n"); ...
• //任意输入5个数据从小到大排序 #include <stdio.h> int main(int argc,char const *argv[]) { int len = 5; int temp; printf("请输入你要输入数字的的个数：\n"); scanf("%d",&len); int arr...
• printf("请输入10数：\n"); for(int i=0;i<=9;i++) { scanf("%d",&a[i]); } for(int j=0;j<=8;j++) for(int i=0;i<=8-j;i++) { if(a[i]>a[i+1]) { int
• /* * @Description: * @Version: 1.0 * @Author: Jiaoz * @Email: jiaozzzzzzzz@qq.com * @Date: 2021-11-09 18:53:07 */ #include<iostream> using namespace std;... pa,int n){ .
• 用python实现冒泡算法，给你一包含若干值的列表，将他们从小到大排序输出
• #include #include &lt;time.h&gt; using namespace std; ...void srandData(int *, int );...//选择排序具体实现函数 void swap(int *, int *);//两数字实现交换的函数 void display(int *, int );...
• 冒泡排序

...