1、设计子函数sort()实现整型数组a [N] 从小到大排序;在主函数中为一维数组输入数据,然后调用
void sort(int array[],int n)
{
属int i,j,flag,temp;
for(i = 0; i < n; i++)
{
flag = 1;
for(j = i+1; j < n; j++)
{
if(array[j] < array[j+1])
{
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
for(i = 0; i < n; i++)
printf("%d ", array[i]);
}
void main()
{
int a[100], pos;
for(pos = 0; pos < 10; pos ++)
scanf("%d", &a[pos]);
sort(a, 10);
}
2、JavaScript数字数组怎么按数字大小排序?
先写上我们的示例代码,定义了一个数组arr,数组包括有几个字母,不按顺序的回,要对数组答进行排序,直接调用sort方法。再加上一些输出语句,console.log是指在浏览器的调试控制台里输出内容。
运行页面,我们在控制台里看下结果,如图,数组调用sort方法后,就按字母的升序做好排序了。
修改下代码,把数组内容从字符串改成数字,然后再调用sort方法。
修改后,运行页面,再看下结果。
数组排序都是按字符串来排序的,而不管数组内容是数字还是字符串。
修改下sort排序方法,把刚才定义的方法名传进来。
运行页面,可以看到现在的数组就是按数字从小到大排序的。
3、用对数组元素进行升序排序。给出完整的sort函数的定义。
void sort(int a[],int n)
{
int i, j, temp;
for (j = 0; j < n - 1; j++)
for (i = 0; i < n - 1 - j; i++)
if(a[i] > a[i + 1])
{temp=a[i]; a[i]=a[i+1]; a[i+1]=temp;}
}
4、设计一个函数(数组函数),将数组中的元素从小到大排序
#include<iostream>
using namespace std;
void sort(int a[], int n){
int i, j, k, t;
for(i=0; i<n-1; i++){
答k=i;
for(j=i+1; j<n; j++)
if(a[j]<a[k]) k=j;
t=a[k];
a[k]=a[i];
a[i]=t;
}
}
void main(){
int a[]={ 3,5,2,8,7,1,9,4,6 };
sort(a,9);
for(int i=0; i<9; i++)
cout <<a[i] <<" ";
cout <<endl;
}
5、设计一个应用程序,输入一个至少十个元素的数组,对数组进行升序排列
就是排序算法,copy可以考虑的算法包括: 直接插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序、归并排序、桶排序等。 提供一个冒泡排序吧,其他的建议自己实现: typedef int DT;void swap(DT* a, DT* b){if(a!=b){*a=*a ^ *b;*b=*a ^ *
6、设计一个一维数组的排序函数p_sort,并调用它对10个整数进行排序。p_sort函数原型如下:
参考袭代码如下:
#include<stdio.h>7、求高手教我怎么对数组排序
可以自己写一个函数用来给数组排序。或者用MATLAB自带的
Matlab 用sort函数排序 二维数组2008-09-14 22:51在Matlab中排序某个向量(一维)时,可以使用sort(A),其中A为待排序的向量,如果仅是用来排序A,那么直接使用sort(A)即可, 如果排序后还需要保留原来的索引可以用返回值,即[B,ind]=sort(A),计算后,B是A排序后的向量,A保持不变,ind是B中每一项对应于A 中项的索引。排序是安升序进行的。
在Matlab中,访问矩阵中的元素,一维用A(1)访问向量A的第一个元素;(下标从1开始);二维用A(1,2)访问A中第一行,第二列的元素。
由于在sort函数的结果中,是安升序排序的,要转换成降序,先用X=eye(n)生成一个n维的单位阵,然后用X=rot90(X)将其旋转为次对角线的单位阵,再用原来矩阵乘以X即可,如要讲A逆序排列采用如下步骤:
X=eye(size(A));
X=rot90(X);
A=A*X;
假如a是一个2*n的矩阵,即两行.
b=a(1,:);
[c,pos]=sort(b);%pos为排序后的下标,c为第一行的排序结果;
a(2,:)=a(2,pos);%第二行按照第一行排序的下标对应
a(1,:)=c;%第一行结果重新赋给a 的第一行
以下适用于m*n的矩阵按第一行排序
[ b, pos ] = sort( a( 1, : ) );
a = a( :, pos );
8、设计一个一维数组的类模板,要求有对数组进行排序、查找和求元素总和的 成员函数
#include<iostream>
using namespace std;
//类模板
template<class T>
class vector
{
public:
void sort(T a[],int n);
T sum(T a[],int n);
int search(T e, T a[], int n);
};
//排序
template<class T>
void vector<T>::sort(T a[],int n)
{
T temp;
bool exchange;
for(int i = 1; i < n; i++)
{
exchange = false;
for(int j = n-1; j >= i; j--)
if(a[j] < a[j-1])
{
temp = a[j]; a[j] = a[j-1]; a[j-1] = temp;
exchange = true;
}
if(!exchange)
return;
}
}
//求和
template<class T>
T vector<T>::sum(T a[],int n)
{
T sum = a[0];
for(int i = 1; i < n; i++)
sum += a[i];
return sum;
}
//查找
template<class T>
int vector<T>::search(T e, T a[], int n)
{
for(int i = 0; i < n; i++)
if(a[i] == e)
return i;
return -1;
}
void main()
{
int data[5] = {5,4,3,2,1};
vector<int> obj;
cout<<"数组和为:"<<obj.sum(data,5)<<endl;
cout<<"数字4在数组中的位置是:"<<obj.search(4,data,5)<<endl;
cout<<"排序前数组各元素为:"<<endl;
for(int i = 0; i < 5; i++)
cout<<data[i]<<" ";
cout<<endl;
cout<<"排序后数组各元素为:"<<endl;
for(i = 0; i < 5; i++)
cout<<data[i]<<" ";
cout<<endl;
}
9、用“选择排序法”对一维数组中的整数进行排序
选择排序的思路,来 每次选最小自的数放前边。。int n[100]; //100个数进行排序。int m;for(int i = 0; i < 99; i ++){m=i;for(int j = i+1 ; j < 100; j ++){//从j到99中选最小的元素放在第j位if(n[j]<n[m])m=j;}if(m!=i){//交换n[m],n[i]int s = n[i];n[i]=n[m];n[m]=s;}}
10、C语言,选择法排序,对数组A进行升序排列,求答案,谢大神!
给你个我以前写的降序的程序,你稍微改下就行了,我懒得改了,
#include <stdio.h>
#define N 10
main()
{
int i,j;/*i,j为循环变量*/
long a[N],temp,min; /*a[min]为比较时较小的数*/
printf("请依次输入%d个数。\n",N);
/*进行循环输入这十个数*/
for(i=0;i<N;i )
scanf("%ld",&a[i]);
printf("你输入的%d个数是\n",N);
/*进行循环输出这十个数*/
for(i=0;i<N;i )
printf("%ld ",a[i]);
printf("\n");
/*利用选择法,即从后9个比较过程中,选择一个最小的与第一个
元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。*/
for(i=0;i<N-1;i )
{
min=i;
for(j=i 1;j<N;j )
if(a[j]>a[min])
{
temp=a[j];
a[j]=a[min];
a[min]=temp;
}
}
printf("这%d个数从大到小排列为\n",N);
/*打印出这十个经排列后的数*/
for(i=0;i<N;i )
printf("%d ",a[i]);
printf("\n");
}