使用指针方式进行数组排序 选择排序:

#include<stdio.h>
void select_sort(int *a,int n)
{
	int i,j;
	for(i = 0;i<n-1;i++)
	{
		for(j = i+1;j < n;j++)
		{
			if(*(a+i)>*(a+j))
			{
				int temp;
				temp = *(a+i);
				*(a+i) = *(a+j);
				*(a+j) = temp;
			}
		}
	}
/*	for(i = 0;i < n;i++)
	{
		printf("%d\t",*(a+i));
	}
*/
}
void print(int *a,int n)
{
	int i;
	for(i = 0;i < n;i++)
	{
		printf("%d\t",*(a+i));
	}
	printf("\n");
}
int main()
{
	int a[5];
	int i;
	for(i = 0;i < 5;i++)
	{
		scanf("%d",&a[i]);
	}
	select_sort(a,5);
	print(a,5);
	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-05 23:26:20

使用指针方式进行数组排序 选择排序:的相关文章

实例365(13)---------经典数组排序方法------选择排序法

一:使用选择排序法对一维数组进行排序,截图 /*选择排序的个人理解:第一遍筛选,选出其中最大的值,得到值和下标 将最大的值的位置和数组的第一个位置交换 从数组的第二个位置开始第二遍筛选 将其中最大的值的位置和数组的第二个位置交换 直到筛选完数组 */ 二:代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; u

指针选择排序法,10个整数从小到大排序

//指针方法,选择排序法对10个int按从小到大排列 #include<stdio.h> main() { int n=10,i,b,a[10],*p; int sort(int *q,int n); // scanf("%d",&10); for(p=a;p<a+10;p++)//键盘输入数组元素 scanf("%d",p); p=a;//超重要!!!!!!!!!!不能忘 sort(p,10);//调用函数 for(p=a;p<a+

单行数组排序【选择排序】

sense:也许只有那些时刻准备着的人,才有资格过得好吧 虽然选择排序和冒泡排序都是在一次内循环后确定了一个元素的位置,不同的是冒泡会移动一些中间位置[这些元素移动的位置并不是它最终位置] 选择排序,使用了标记这个概念[我的理解是:给将可能成为极端位置的元素标记(极端是指有序序列逻辑上的端位置)] 具体代码: 1 public class ChooseSort { 2 public static void main(String []args){ 3 int array[] = {3,2,41,

利用指针排序与选择排序算法

1 //读入字符串,并排序字符串 2 #include <stdio.h> 3 #include <string.h> 4 #define SIZE 81 5 #define LIM 20 6 #define HALT "" 7 8 void stsrt(char * strings [], int num); //字符串排序函数 9 char * s_gets(char * st,int n); 10 11 int main(void) 12 { 13 cha

数组排序之选择排序

??在刚开始学习数组时,不能很好的使用简单的排序算法,当进行深入学习了一段时间后,才分清楚,今天这里简单的分享一下使用选择排序的算法并进行相关实例. 1. 什么是选择排序? ??从字面意思可以理解,就是有选择的进行排序,那么什么是有选择的呢?按照我的理解,就是按照某一种规则(例如从大到小或者从小到大)进行排序,就好像我们去看美女,肯定是先找气质最好的,依次往下,当然按照气质来进行选择的话,这是一个判断条件,是我们的一个标准:而我们所学习的选择排序也是这样. 专业解释: ??选择排序是通过每一趟排

几种排序方式的java实现(01:插入排序,冒泡排序,选择排序,快速排序)

以下为集中排序的java代码实现(部分是在引用别人代码): 插入排序(InsertSort): //代码原理 public static void iSort(int[] a){ for(int i = 1;i < a.length; i++){ if(a[i] < a[i-1]){ int temp = a[i]; while(temp < a[i-1]){ a[i] = a[i-1]; if(i-1 > 0){ i--; }else{ break; } } a[i-1] = t

Java数组排序算法之直接选择排序

1.基本思想 直接选择排序的基本思想是将指定排序位置与其他数组元素分别对比,如果满足条件就交换元素值,注意这里区别冒泡排序,不是交换相邻元素,而是把满足条件的元素与指定的排序位置交换. 与冒泡排序相比,直接选择排序的交换次数要少很多,因此速度更快些. 2.算法示例 每一趟从待排序的数组元素中选出最小(或最大)的一个元素,顺序的放在已排好序的数组元素前或后,直到全部待排序的数据元素排完. 例如有一个6个元素的数组[63 4 24 1 3 15],排序大致过程如下所述: 第1轮排序:63和15交换位

数组排序(2)-选择排序

(一)选择排序 1.算法描述: (1) 初始状态:有序区为空,无序区为R[1..n]: (2) 第i趟排序(i=1,2,3…n-1)开始时,当前有序区和无序区分别为R[1..i-1]和R(i..n).该趟排序从当前无序区中-选出关键字最小的记录 R[k],将它与无序区的第1个记录R交换,使R[1..i]和R[i+1..n)分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区; (3) n-1趟结束,数组有序化了. 2.手动模拟排序: 3.算法分析: (1)时间复杂度:平均情况 O(n2

数组排序代码,冒泡排序&amp;快速排序&amp;选择排序

冒泡排序: for(var i=0;i<arr.length-1;i++){ for(var j=0;j<arr.length-1-i;j++){ if(arr[j]>arr[j+1]){ var temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } 选择排序: var arr=[2,5,4,6,3,7,1]; for(var i=0;i<arr.length-1;i++){ for(var j=i+1;j<arr.length