C 语言-简单选择排序

    xiaoxiao2021-04-18  67

    #include #include #define N 7   void selectSort(int keys[],int length); int selectMin(int keys[],int start,int end); //length 代表数组长度  void selectSort(int keys[],int length) { int i,index; //依次从存在数据的位置上,从 1 到 length-2 抽取最小元素,放到最前面   最后一个元素不用比较,所以是 length-2  for (i = 1;i < length-1; i++) {  //调用函数 selectMin 在指定范围内找到最小值的下标,并返回  index = selectMin(keys,i,length-1); //以下三步,是将找到的最小值放到前面;这里 下标 0 处的空间发挥了临时存储的作用  keys[0] = keys[i]; keys[i] = keys[index]; keys[index] = keys[0]; } } // 在数组中的指定范围内找到最小值  int selectMin(int keys[],int start,int end) { int index = start; int i; //假设传入的下标 start 处的元素为最小值  int min = keys[start]; for (i = start+1;i <= end; i++) { if (keys[i] < min) { min = keys[i]; index = i; } } //printf("\nindex下标%d\n",keys[index]); return index; }  //此处是主函数,在这里输入数据,并调用 selectSort 这个方法进行简单选择排序  int main(int argc, char *argv[]) { //定义数组存储数据,由于将 keys[0] 作为交换数据的临时空间,所以不能存储数据,实际只能存储 N-1个数据  int keys[N]; //定义数据输入时的循环变量  int i; printf("\n一共要输入%d个值\n",N-1); //循环输入 N-1 个数据,下标从 1 到 N-1  for (i = 1;i < N; i++) {  printf("\n请输入第%d个数:",i); scanf("%d",&keys[i]); } //调用 selectSort 方法   keys数组和 N 作为参数,传给了该方法   selectSort(keys,N); //④  for (i = 1;i < N;i++ ) { printf("%d\t",keys[i]); } return 0; } //------------------原格式图片-----------------------------------------------
    转载请注明原文地址: https://ju.6miu.com/read-675225.html

    最新回复(0)