选择排序
来源:互联网 发布:能力天空源码下载 编辑:程序博客网 时间:2024/05/18 00:18
C语言
/* 版本一 */#include<stdio.h>#include<stdlib.h>void swap(int*a,int*b){ int temp; temp=*a; *a=*b; *b=temp;}void select_sort(int A[],int n){ register int i,j,min,m; for(i=0;i<n-1;i++) { min=i;//查找最小值 for(j=i+1;j<n;j++) { if(A[min]>A[j]) { min=j; } } if(min!=i) { swap(&A[min],&A[i]); printf("第%d趟排序结果为:\n",i+1); for(m=0;m<n;m++) { if(m>0) { printf(""); } printf("%d",A[m]); } printf("\n"); } }}int main(void){ int n; while(scanf("%d",&n)!=EOF) /* VS2013等版本中需使用scanf_s(),VC6.0中使用scanf() */ { int i; int*A=(int*)malloc(sizeof(int)*n); for(i=0;i<n;i++) { scanf("%d",&A[i]); } select_sort(A,n); printf("最终排序结果为:\n"); for(i=0;i<n;i++) { if(i>0){ printf(""); } printf("%d",A[i]); } printf("\n"); } return 0;}/* 版本二 */#include <stdio.h>#include <math.h>#define MAX_SIZE 101#define SWAP(x, y, t) ((t) = (x), (x) = (y), (y) = (t))void sort(int[], int); /* selection sort */void main(void){ int i, n; int list[MAX_SIZE]; printf("Enter the number of numbers to generate: "); scanf_s("%d", &n); if (n < 1 || n > MAX_SIZE){ fprintf(stderr, "Improper value of n\n"); exit(1); } for (i = 0; i < n; i++){ /* randomly generate numbers */ list[i] = rand() * 1000; printf("%d ", list[i]); } sort(list, n); printf("\n Sorted array:\n"); for (i = 0; i < n; i++) /* print out sorted numbers */ printf("%d ", list[i]); printf("\n");}void sort(int list[], int n){ int i, j, min, temp; for (i = 0; i < n - 1; i++){ min = i; for (j = i + 1; j < n; j++) if (list[j] < list[min]) min = j; SWAP(list[i], list[min], temp); }}
c++
#include<iostream>#include<time.h>#include<iomanip>using namespace std;const int N=10;int main(){ int a[N],i,j,temp,b; srand(time(NULL)); for(i=0;i<N;i++) a[i]=rand()%100; for(i=0;i<N;i++) cout<<setw(3)<<a[i]; cout<<endl; for(i=0;i<N-1;i++) { temp=i; for(j=i+1;j<N;j++) { if(a[temp]>a[j]) temp=j; } if(i!=temp) { b=a[temp]; a[temp]=a[i]; a[i]=b;} } for(i=0;i<N;i++) cout<<setw(3)<<a[i]; cout<<endl;}
JAVA
public static void selectSort(int[]a){ int minIndex=0; int temp=0; if((a==null)||(a.length==0)) return; for(int i=0;i<a.length-1;i++) { minIndex=i;//无序区的最小数据数组下标 for(intj=i+1;j<a.length;j++) { //在无序区中找到最小数据并保存其数组下标 if(a[j]<a[minIndex]) { minIndex=j; } } if(minIndex!=i) { //如果不是无序区的最小值位置不是默认的第一个数据,则交换之。 temp=a[i]; a[i]=a[minIndex]; a[minIndex]=temp; } }}
0 0
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序:
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- SQL查看表注释、字段注释
- 关于有偿提供拼图响应式后台的通知
- git 强制忽略加入版本控制的文件
- 关于php 类 方法重定义的问题
- Swift 传值之通知传值
- 选择排序
- char*,char a[ ],char*a[]学习、sizeof、位与字节
- 关于 git flow windows 安装
- 在Linux(CentOS)上打包应用程序RPM
- ASP.NET Web API 官方教学视频
- kinetis bootloader测试case
- Ubuntu安装iSCSI HBA
- 使用nodejs,express,mysql,Bootstrap开发采购招标网站(四)Bootstrap-table实现Ajax新增修改数据
- Mac添加环境变量