c語言中selectsort,C語言中的簡單數據類型包括

本文目錄一覽:

C語言直接選擇排序運行失敗

你的選擇排序的函數傳參,傳錯了,select_sort(a[8],8);應該是select_sort(a,8);

a[8]在C語言中是數組a的第9個元素,而a數組只有8個元素,所以你傳了一個越界的數組元素,因此出運行錯誤

a在C語言中是數組a的第1個元素的指針,所以可以在函數中訪問到整個a數組

還有函數的定義那一句void select_sort();應該改成 void select_sort(int a[],int n);

還有需要把if(min!=i)語句移到for-j循環外面,for-i循環裡面

還有把printf(“%d”,a[i]); 改成printf(“%d “,a[i]);每輸出一個元素加一個空格

完整的C語言程序如下

#include stdio.h

void select_sort(int a[],int n);

int main(){ 

 int i; int a[8]; 

 printf(“請輸入8個整數,將為您從小到大排序。\n”); 

 for(i=0;i8;i++) { 

  scanf(“%d”,a[i]); 

 } 

 select_sort(a,8); 

 for(i=0;i8;i++) { 

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

 } 

 return 0;

}

void select_sort(int a[],int n){ 

 int i,j,t,min; 

 for(i=0;in-1;i++) { //n-1次排序(移動)

  min=i; 

  for(j=i+1;jn;j++) { //n-i次比較

   if(a[min]a[j]) min=j; 

  } 

  if(min!=i){ //最小值不在i處的情況 

   t=a[min]; 

   a[min]=a[i]; 

   a[i]=t; 

  } 

 }

}

運行結果

請輸入8個整數,將為您從小到大排序。

8 71 16 35 43 33 26 18

8 16 18 26 33 35 43 71

C語言編寫程序,將一個一維數組的值按逆序重新存放。

#includestdio.h

int  main()

{

  int a[5]={8,6,5,4,1},i,n=5,temp;

  for(i=0;in/2;i++)

  {

      temp=a[i];

      a[i]=a[n-i-1];

      a[n-i-1]=temp;       

  }                 

 for(i=0;in;i++)

 {

    printf(“%d\t”,a[i]);     

 }               

  system(“pause”);

  return 0;

}

擴展資料:

選擇排序

主要思想就是,基本上默認數組中第一個元素為最大(最小)值,之後將這個元素和後面的每個元素都進行比較,以由大到小排序為例,當第一個值遇到比其大的,就進行交換。這樣第一輪過後,第一位就是最大的。

接著進行第二輪,由第二個數開始逐個比較,遇到比第二個數大的進行交換,這樣第二輪之後第二個數就是第二大的了,以此類推,不斷進行選擇,最後完成排序。

void selectSort(int numbers[], int length) {

for (int i = 0; i length; i++) {

  for (int j = i + 1; j length; j++) {

    if (numbers[i] numbers[j]) {

      int temp = numbers[i];

      numbers[i] = numbers[j];

      numbers[j] = temp;

    }

  }

}

}

int main(int argc, const char * argv[]) {

int myArray[] = {42, 7, 1, -3, 88};

int length = sizeof(myArray) / sizeof(myArray[0]);

selectSort(myArray, length);

for (int i = 0; i length; i++) {

  printf(“%i “, myArray[i]);

}

return 0;

}

當第一個數來比較的時候,i = 0,那麼j應該等於i + 1,因為第一個數要和第二個數開始比,並且比較length – 1次;當i = 1時,j = 2,並且比較length – 2次,以此類推;上面寫的是由大到小排序。

c語言怎樣通過函數調用實現選擇排序法

c語言通過函數調用實現選擇排序法:

1、寫一個簡單選擇排序法的函數名,包含參數。int SelectSort(int * ListData,int ListLength);

2、寫兩個循環,在循環中應用簡單選擇插入排序:

int SelectSort(int * ListData,int ListLength)

{

int i , j ;

int length = ListLength;

for(i=0;i=length-2;i++)

{

int k = i;

for(j=i+1;j=length-1;j++)

{

if(ListData[k]ListData[j])

{

k=j;

}

}

if(k!=i)

{

int tmp = ListData[i];

ListData[i] = ListData[k];

ListData[k] = tmp;

}

}

return 0;

}

3、對編好的程序進行測試,得出測試結果:

int main()

{

int TestData[5] = {34,15,6,89,67};

int i = 0;

printf(“排序之前的結果\n”);

for(i = 0;i5;i++)

printf(“|%d|”,TestData[i]);

int retData = SelectSort(TestData,5);

printf(“排序之後的結果:\n”);

for(i = 0;i5;i++)

printf(“|%d|”,TestData[i]);

return 0;

}

4、簡單選擇排序中,需要移動的記錄次數比較少,主要的時間消耗在對於數據的比較次數。基本上,在比較的時候,消耗的時間複雜度為:n*n。

C語言中通過函數調用對一維數組進行排序

#include stdio.h

#include stdlib.h

#include time.h

#define MAXlen 100

void select_sort(int *x, int n) { //選擇排序

int i, j, min;

int t;

for (i = 0; i n – 1; i++) { // 要選擇的次數:0~n-2共n-1次

min = i; // 假設當前下標為i的數最小,比較後再調整

for (j = i + 1; j n; j++) { //循環找出最小的數的下標是哪個

if (*(x + j) *(x + min)) {

min = j; // 如果後面的數比前面的小,則記下它的下標

}

}

if (min != i) { // 如果min在循環中改變了,就需要交換數據

t = *(x + i);

*(x + i) = *(x + min);

*(x + min) = t;

}

}

}

int main() {

int i;

int iArr[MAXlen];

srand((unsigned int)time(NULL));

printf(“\n排序前:\n”);

for(i = 0 ; i MAXlen ; i++) {

iArr[i] = (unsigned int)rand() % 1000;

if(i % 10 == 0) printf(“%\n”);

printf(“%5d”,iArr[i]);

}

printf(“\n”);

select_sort(iArr,MAXlen);

printf(“\n排序後:\n”);

for(i = 0 ; i MAXlen ; i++) {

if(i % 10 == 0) printf(“%\n”);

printf(“%5d”,iArr[i]);

}

printf(“\n\n”);

return 0;

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/206181.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-07 17:49
下一篇 2024-12-07 17:49

相關推薦

  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • Python返回數組:一次性搞定多種數據類型

    Python是一種多用途的高級編程語言,具有高效性和易讀性的特點,因此被廣泛應用於數據科學、機器學習、Web開發、遊戲開發等各個領域。其中,Python返回數組也是一項非常強大的功…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • Python 轉換數據類型

    本文將詳細探討Python中轉換數據類型的方法和技巧,幫助大家更好地處理不同類型的數據。 一、數據類型概述 在Python中,常用的數據類型包括字元串、整數、浮點數、列表、元組、字…

    編程 2025-04-29
  • Python海龜代碼簡單畫圖

    本文將介紹如何使用Python的海龜庫進行簡單畫圖,並提供相關示例代碼。 一、基礎用法 使用Python的海龜庫,我們可以控制一個小海龜在窗口中移動,並利用它的「畫筆」在窗口中繪製…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29

發表回復

登錄後才能評論