7.26 数组 选择排序 putchar gets

数组初始化:

定义一个数组,不完全初始化,那么未初始化的值都为0

定义一个数组,不初始化,里面全都是垃圾值

让数组全部初始化0   可以 int a[500] = {0};

数组初始化错误:

int a[5] ;

b = {1,2,3,4,5}//这样严重不可以,因为b是一个地址

int b[5]= {1 ,   ,  2};//这样也不可以,不能中途出现未初始化的

地址+1:

int a[10];

printf("%p %p %p",  &a[0] , a , &a)   //这三个值一样

printf("%p %p %p",  &a[0]+1,  a +1, &a+1)   //不一样

a+1   代表第一个元素地址+1   相当于加了1个类型长度的字节 -------->  所以才有了a[1]

&a代表整个数组,+1 相当于加了10个类型长度的字节

可变长数组:

c89不支持可变数组,c99支持可变数组

c89不支持for(int i=0;i<10;i++) c99支持这样写

定义数组的时候,必须要知道数组的长度    int a[] ;//严重错误

定义数组长度的时候,最好使用宏

#define N 5

int a[N];

获取数组的长度:


int a[] = {2 , 3 , 6 , 7 , 9 , 8 , 1 , 4 ,10 };

int len = sizeof(a)/sizeof(int);  //   或者sizeof(a)/sizeof(a[0]);

printf("%d\n",len);

数组间的赋值:

int a[5] = {1,2,3,4,5};

int b[5];

b = a;//严重错误,这是地址间的赋值,两个数组直接的赋值应该for,

随机数:

srand(1);//生成随机数种子

rand();//根据种子来产生随机数

在 stdlib.h


选择排序:

  1. void select_sort(int a[], int n)
  2. {
  3. int i, j, min, temp;
  4. for (i = 0; i < n; i++)
  5. {
  6. min = i;      //min表示的意思是最小值的下标
  7. for (j = i + 1; j < n; j++)
  8. {
  9. if (a[min] > a[j]) //每次都把最小的那个值 和 第一位的值 替换顺序
  10. {
  11. min = j;
  12. }
  13. temp = a[i];
  14. a[i] = a[min];
  15. a[min] = temp;
  16. }
  17. }
  18. }


维基百科的选择排序

  1. void selection_sort(int *a, int len)
  2. {
  3. int i, j, min, t;
  4. for (i = 0; i < len - 1; i++)
  5. {
  6. min = i;
  7. //查找最小值
  8. for (j = i + 1; j < len; j++)
  9.     if (a[min] > a[j])
  10. min = j;
  11. //交换
  12. if (min != i)
  13. {
  14. t = a[min];
  15. a[min] = a[i];
  16. a[i] = t;
  17. }
  18. }
  19. }

}


冒泡排序:

int main()

{

int a[5] = {9,8,3,5,2};

int i;

printf("冒泡排序前:\n");

for (i = 0; i < 5;i++)

{

printf("%d ", a[i]);

}

printf("\n");

 int m, n,temp;

 for (m = 0; m < 5 - 1;m++)

 {

  for (n = 0; n < 5 - 1 - m; n++)

  {

   if (a[n] > a[n + 1])

   {

    temp = a[n];

    a[n] = a[n + 1];

    a[n + 1] = temp;

   }

  }

 }

printf("冒泡排序后:\n");

for (i = 0; i < 5; i++)

{

printf("%d ", a[i]);

}

printf("\n");

return 0;

}


putchar :

putchar(‘\n‘);//这里是单引号,如果用双引号,错误       含义是一次打出一个字符

printf("\n"); //这里是双引号,如果用单引号,错误

getchar:

//getchar 只能接收一个字符                            

char ch;

char tmp;

while (1)

{

ch = getchar();

tmp = getchar(); //过滤回车

if (ch >= ‘0‘ && ch <= ‘9‘)

{

printf("你输入的是一个数字\n");

}

else if (ch >= ‘a‘ && ch <= ‘z‘)

{

printf("你输入的是一个小写字母\n");

}

else if (ch >= ‘A‘ && ch <= ‘Z‘)

{

printf("你输入的是一个大写字母\n");

}

else

{

printf("你输入的是其他字符\n");

}

}

gets :

gets(a) //a要是个指针 空格也能接收

puts:

int main()

{

char ch[10];

puts("please input your name:\n"); //注意,这里会有两个换行,因为puts会自动在后面增加一个\n

gets(ch);

puts(ch);

}

来自为知笔记(Wiz)

时间: 2024-11-09 02:00:47

7.26 数组 选择排序 putchar gets的相关文章

java语言之数组-----选择排序

1. 数组的基本知识:数组是用来存储变量的集合 2. 数组的声明格式:元素类型 [] 数组引用变量名 = new 元素类型[元素个数] 如: int [] arrary = new int [10]  声明并创建一个具有int类型的10个元素  arrary 是一个含有十个int 类型的元素数组的引用变量 3. 数组初始化: int [] arrary = new int [] {1,2,3,4,56,7}; 或        int [] arrary = new int [6]; arrar

Java 数组 之 一维数组 选择排序算法

http://www.verejava.com/?id=16992690199232 /* 用选择排序: 思路: 1. 将数组中剩下的没有排序的元素中选出最小的一个, 插入已经排序的后面 */ public class SelectSort { public static void sort(int[] arrays){ int minIndex;//保存选择最小值的索引 for (int i = 0; i < arrays.length-1; i++) { minIndex=i; int mi

数组选择排序方法

public void arrayClooseSort() {    int[] num = {10,14,3,8,11,9,2,4};    //选择排序,升序排序    for(int i = 0;i < num.length-1;i++) {        for(int j = i + 1;j < num.length;j++) {            if(num[i] > num[j]) {                int temp = num[i];        

js常考之数组选择排序

选择排序: 两个for循环嵌套,外循环记录每次循环开始的位置,内循环查找本次循环内的最小值: 实质是每循环一次将查到的最小值放在每次循环的最初开始的位置: 代码: //选择排序 function arrSort3(arr){ var len= arr.length, minIndex,nu; for(var i = 0; i < len-1; i++){ minIndex = i;//记录每次循环的第一个数为该次循环的最小值索引 for(var j = i+1; j < len; j++){

&lt;每日一题&gt;题目26:选择排序(冒泡排序改进版)

''' 选择排序:选择最小的,以此类推 ''' import random import cProfile def select_Sort(nums): for i in range(len(nums)-1): for j in range(i+1,len(nums)): if nums[i] > nums[j]: # max = nums[i] # nums[i] = nums[j] # nums[j] = max #python有更好的写法 nums[i],nums[j] = nums[j]

二位数组-选择排序

#include<stdio.h> int main () { int i,j; int a[10]; int iTemp; int iPos; printf("为数组元素赋值:\n"); //通过键盘为数组赋值 for(i=0;i<10;i++) { printf("a[%d]=",i); scanf("%d",&a[i]); } //从小到大开始排序 核心程序 for(i=0;i<9;i++)//0 1 2 3

数组-选择排序

进行比较,每次将最小值都抽取出来放到最后 1 #include<stdio.h> 2 3 int main(void) 4 { 5 int array[10]={3,40,2,4,23,54,52,5,122,45}; 6 7 int i,j; 8 for(i=0;i<9;++i) 9 { 10 int min=i; 11 for(j=i;j<10;++j) 12 { 13 if(array[min]>array[j]) 14 { 15 int temp; 16 temp=a

夯实基础——选择排序

物理结构:数组 选择排序分析: 最优时间复杂度:O(n^2) 最坏时间复杂度:O(n^2) 平均时间复杂度:O(n^2) 最差空间复杂度:O(n) 稳定性:不稳定 选择排序函数: int SelectSort(int a[],int length); //选择排序 //每次选最小值放在最前面 int SelectSort(int a[],int length) { int i,j,min; for(i=0;i<length;i++) { min=i; for(j=i;j<length;j++)

算法_基本排序算法之冒泡排序,选择排序,插入排序和希尔排序

排序的元素实现了Comparable接口,以达到对于通用性. 最基础的排序是冒泡排序,下面是其思路: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 针对所有的元素重复以上的步骤,除了最后一个. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较. 下面是其实现代码: public class Maopao { public void sort(Comparable[]